home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr28 / mxmnu239.zip / MARXMENU.DOC < prev    next >
Text File  |  1993-03-22  |  426KB  |  11,755 lines

  1.     
  2.     
  3.     
  4.     
  5.     
  6.      
  7.     
  8.      ===================================================================
  9.     
  10.     
  11.                        <*> Computer Tyme MarxMenu <*>
  12.     
  13.                               Reference Manual
  14.     
  15.                     Copyright 1989 - 1992 by Marc Perkel
  16.     
  17.          All Rights Reserved * Version 2.39 * Release Date: 06-22-92
  18.     
  19.      Computer Tyme * 411 North Sherman Suite 300 * Springfield Mo. 65802
  20.     
  21.                   (417) 866-1222 voice * (417) 866-1665 bbs
  22.     
  23.                              Fax: (417) 866-0135
  24.     
  25.                            CompuServe: 76505,1120
  26.     
  27.                               MHS: Marc @ CTyme
  28.     
  29.                   Internet: Marc @ CTyme.MHS.Compuserve.com
  30.     
  31.      ===================================================================
  32.     
  33.  
  34.     Computer Tyme * MarxMenu * Table of Contents            Page #1
  35.     -----------------------------------------------------------------
  36.     
  37.       Copyright .............................................. 1
  38.       MarxMenu License ....................................... 1
  39.       MarxMenu Warranty ...................................... 1
  40.       MarxMenu Trademarks .................................... 2
  41.       The MarxMenu Name ...................................... 2
  42.       Technical Support ...................................... 2
  43.       Installation ........................................... 3
  44.       Installing the Network Survival Kit .................... 4
  45.       Overview of the MarxMenu System ........................ 4
  46.       What MarxMenu Does ..................................... 6
  47.       The MARX.BAT File ...................................... 7
  48.       DROPTO.BAT ............................................. 10
  49.       Support for early DOS versions ......................... 10
  50.       About Environment Variables ............................ 11
  51.       Dealing with Multiple DOS Shells ....................... 13
  52.       MarxMenu and TSR Control ............................... 13
  53.       Sample Menus on Disk ................................... 14
  54.       Network Users .......................................... 14
  55.       Network Menu Strategy .................................. 15
  56.       Using TRUENAME on Networks ............................. 15
  57.       Novell Users ........................................... 16
  58.       The Novell Menu Translator ............................. 16
  59.       Logging out under Menu Control ......................... 17
  60.       Logging in with MarxMenu ............................... 18
  61.       Using Novell's Login ................................... 18
  62.       The CONFIG.SYS File .................................... 19
  63.       The AUTOEXEC.BAT File .................................. 20
  64.       The SHELL.CFG File ..................................... 21
  65.       Using a Menu File to Log In ............................ 22
  66.       Novell Search Drives ................................... 22
  67.       Setting File Attributes ................................ 23
  68.       Novell Semaphores ...................................... 23
  69.       NetWare MHS & MarxMenu ................................. 24
  70.       Running a MarxMenu ..................................... 25
  71.       Upgrading MarxMenu ..................................... 26
  72.       Customizing MarxMenu Sample Files ...................... 27
  73.       Menu Analysis .......................................... 27
  74.       Onkey Statements ....................................... 28
  75.       Popup Menus ............................................ 28
  76.       Using QUICK.MNU and QUICKNOV.MNU ....................... 29
  77.       The Console ............................................ 30
  78.       Repositioning the Top Window ........................... 31
  79.       Mouse Support .......................................... 31
  80.       Starting off the Easy Way .............................. 32
  81.       About Variables ........................................ 32
  82.       Numeric Variables ...................................... 33
  83.       Boolean Variables ...................................... 33
  84.       String Variables ....................................... 34
  85.       Real Numbers ........................................... 34
  86.       Local Variables ........................................ 35
  87.       Dates .................................................. 35
  88.       Passing Parameters to Procedures ....................... 36
  89.       About Constants ........................................ 37
  90.       About Arrays ........................................... 37
  91.       About Qualifiers ....................................... 38
  92.       Pointer Variables ...................................... 40
  93.  
  94.     Computer Tyme * MarxMenu * Table of Contents            Page #2
  95.     -----------------------------------------------------------------
  96.     
  97.       Comments in Menu Files ................................. 40
  98.       The MarxMenu Compiler .................................. 41
  99.       MarxMenu Language Rules ................................ 41
  100.       Compiler Compatibility ................................. 42
  101.       A word about DOS versions .............................. 42
  102.       A word about BUGS ...................................... 43
  103.       Tips From the Master ................................... 43
  104.       Computers do Simple Tasks .............................. 44
  105.       Complex Tasks are made of Simple Tasks ................. 44
  106.       Learning Good Programming Habits ....................... 44
  107.       Use Long Names ......................................... 45
  108.       Use Comments Liberally ................................. 46
  109.       Indent Your code ....................................... 47
  110.       For Duplicate Tasks, Use Procedures .................... 48
  111.       Don't Program Yourself into a Corner ................... 48
  112.       For the POWER User ..................................... 49
  113.       Where MarxMenu is Heading .............................. 50
  114.       A word to Writers and Reviewers ........................ 50
  115.       Using MarxHelp ......................................... 51
  116.       Printing the Example Files ............................. 52
  117.       Security Issues ........................................ 52
  118.       Keeping Users in the Menu .............................. 53
  119.       Using BREAK.SYS ........................................ 53
  120.       Using the SHELL= Command ............................... 54
  121.       Conditional Statements ................................. 55
  122.       Environment Variables used by MarxMenu ................. 56
  123.       MarxMenu Commands ...................................... 57
  124.       | ...................................................... 57
  125.       ( ...................................................... 57
  126.       ) ...................................................... 58
  127.       * ...................................................... 58
  128.       + ...................................................... 58
  129.       - ...................................................... 58
  130.       / ...................................................... 59
  131.       < ...................................................... 59
  132.       <= ..................................................... 59
  133.       <> ..................................................... 59
  134.       = ...................................................... 59
  135.       > ...................................................... 60
  136.       >= ..................................................... 60
  137.       %MenuFileName .......................................... 60
  138.       Abs .................................................... 60
  139.       Actual ................................................. 60
  140.       Alias .................................................. 61
  141.       AllowAbort ............................................. 61
  142.       AllowEsc ............................................... 61
  143.       And .................................................... 62
  144.       AppendArray ............................................ 62
  145.       ApplicationMemory ...................................... 62
  146.       ArcTan ................................................. 63
  147.       AssignList ............................................. 63
  148.       BadDate ................................................ 63
  149.       Bat .................................................... 63
  150.       BatFileName ............................................ 64
  151.       BigShadow .............................................. 64
  152.       BinString .............................................. 64
  153.  
  154.     Computer Tyme * MarxMenu * Table of Contents            Page #3
  155.     -----------------------------------------------------------------
  156.     
  157.       Blanked ................................................ 64
  158.       BlankMessage ........................................... 65
  159.       BlankScreenProgram ..................................... 65
  160.       BlankTime .............................................. 65
  161.       Blink .................................................. 66
  162.       BlockBox ............................................... 66
  163.       BootDrive .............................................. 66
  164.       BoxBorderColor ......................................... 66
  165.       BoxHeader .............................................. 67
  166.       BoxHeaderColor ......................................... 67
  167.       BoxHeaderLeft .......................................... 67
  168.       BoxHeaderRight ......................................... 67
  169.       BoxFooter .............................................. 68
  170.       BoxFooterLeft .......................................... 68
  171.       BoxFooterRight ......................................... 68
  172.       BoxInsideColor ......................................... 68
  173.       Break .................................................. 69
  174.       BrightBackground ....................................... 69
  175.       BuildPath .............................................. 69
  176.       CancelListEntry ........................................ 70
  177.       CapsColor .............................................. 70
  178.       CapsLock ............................................... 70
  179.       Chain .................................................. 71
  180.       Char ................................................... 71
  181.       ChDir .................................................. 71
  182.       CleanFileName .......................................... 71
  183.       ClearLine .............................................. 72
  184.       ClearScreen ............................................ 72
  185.       ClearScreenFirst ....................................... 72
  186.       ClearScreenOnExit ...................................... 73
  187.       ClockColor ............................................. 73
  188.       ClockMode .............................................. 73
  189.       ClockPos ............................................... 74
  190.       ClosePrinter ........................................... 74
  191.       ClusterSize ............................................ 74
  192.       CmdLine ................................................ 75
  193.       ColdBoot ............................................... 75
  194.       ColorScreen ............................................ 75
  195.       Comment ................................................ 75
  196.       Console ................................................ 76
  197.       ConsoleBorderColor ..................................... 76
  198.       ConsoleHeaderColor ..................................... 76
  199.       ConsoleInsideColor ..................................... 76
  200.       ConsolePos ............................................. 76
  201.       Const .................................................. 77
  202.       Cos .................................................... 77
  203.       CpuClass ............................................... 77
  204.       CountryCode ............................................ 77
  205.       CurrentEnvironment ..................................... 77
  206.       CurrentWindow .......................................... 78
  207.       Cursor ................................................. 78
  208.       CustomBox .............................................. 78
  209.       DateSeparator .......................................... 78
  210.       DateString ............................................. 78
  211.       Day .................................................... 79
  212.       DayOf .................................................. 79
  213.  
  214.     Computer Tyme * MarxMenu * Table of Contents            Page #4
  215.     -----------------------------------------------------------------
  216.     
  217.       DayOfWeek .............................................. 79
  218.       DayOfWeekOf ............................................ 79
  219.       DecimalSeparator ....................................... 80
  220.       Delete ................................................. 80
  221.       DelFile ................................................ 80
  222.       DisplayType ............................................ 81
  223.       DirectoriesOnly ........................................ 81
  224.       Dispose ................................................ 81
  225.       DosVersion ............................................. 82
  226.       DosVersionString ....................................... 82
  227.       DosWindow .............................................. 82
  228.       DoubleLineBox .......................................... 82
  229.       DrawBox ................................................ 82
  230.       Drives ................................................. 83
  231.       DvAppNumber ............................................ 83
  232.       DvFrame ................................................ 83
  233.       DvFreeze ............................................... 83
  234.       DvHide ................................................. 84
  235.       DvKillTask ............................................. 84
  236.       DvLastHandle ........................................... 84
  237.       DvLoaded ............................................... 84
  238.       DvMoveWindow ........................................... 84
  239.       DvMyHandle ............................................. 84
  240.       DvPifExecute ........................................... 85
  241.       DvResizeWindow ......................................... 85
  242.       DvSetBottom ............................................ 85
  243.       DvSetTop ............................................... 85
  244.       DvUnFreeze ............................................. 86
  245.       DvUnHide ............................................... 86
  246.       Else ................................................... 86
  247.       ElseIf ................................................. 86
  248.       EndComment ............................................. 87
  249.       Endif .................................................. 87
  250.       EndLoop ................................................ 87
  251.       EndOfFile .............................................. 87
  252.       EndProc ................................................ 88
  253.       EndWhile ............................................... 88
  254.       EnvFree ................................................ 88
  255.       EnvSize ................................................ 88
  256.       EraseTopWindow ......................................... 88
  257.       EraseWindow ............................................ 88
  258.       Execute ................................................ 89
  259.       ExistDir ............................................... 90
  260.       ExistFile .............................................. 90
  261.       ExistOnPath ............................................ 90
  262.       ExitCode ............................................... 91
  263.       ExitMenu ............................................... 91
  264.       Exp .................................................... 91
  265.       Explode ................................................ 91
  266.       ExplodeDelay ........................................... 91
  267.       Extension .............................................. 91
  268.       FileAppend ............................................. 92
  269.       FileAssign ............................................. 92
  270.       FileAttr ............................................... 92
  271.       FileClose .............................................. 92
  272.       FileCreate ............................................. 93
  273.  
  274.     Computer Tyme * MarxMenu * Table of Contents            Page #5
  275.     -----------------------------------------------------------------
  276.     
  277.       FileDate ............................................... 93
  278.       FileFlush .............................................. 93
  279.       FileLog ................................................ 93
  280.       FileOpen ............................................... 93
  281.       FilePart ............................................... 94
  282.       FilePos ................................................ 94
  283.       FileReadln ............................................. 94
  284.       FileRename ............................................. 94
  285.       FileResult ............................................. 95
  286.       FileSeek ............................................... 95
  287.       FileSize ............................................... 95
  288.       FileTime ............................................... 95
  289.       FileWrite .............................................. 95
  290.       FileWriteln ............................................ 96
  291.       FixPath ................................................ 96
  292.       Floppies ............................................... 96
  293.       ForceExplosion ......................................... 96
  294.       ForceExtension ......................................... 96
  295.       Fraction ............................................... 97
  296.       FreeDiskSpace .......................................... 97
  297.       FreeEms ................................................ 97
  298.       FreeMem ................................................ 97
  299.       FreeMemory ............................................. 97
  300.       GetMem ................................................. 98
  301.       GotoXY ................................................. 98
  302.       HexString .............................................. 98
  303.       HiddenAndSystem ........................................ 98
  304.       HighWord ............................................... 99
  305.       Hour ................................................... 99
  306.       HourOf ................................................. 99
  307.       Hundredth .............................................. 99
  308.       IdleProgram ............................................ 99
  309.       If ..................................................... 100
  310.       InactiveBox ............................................ 101
  311.       InactiveBoxColor ....................................... 101
  312.       InactiveShadow ......................................... 102
  313.       Include ................................................ 102
  314.       IncludeDirectories ..................................... 102
  315.       InFile ................................................. 102
  316.       InputBlankChar ......................................... 103
  317.       InputLength ............................................ 103
  318.       InputString ............................................ 103
  319.       Insert ................................................. 104
  320.       InsertMode ............................................. 104
  321.       Int .................................................... 104
  322.       Integer ................................................ 104
  323.       Intr ................................................... 104
  324.       InverseColor ........................................... 105
  325.       InvertString ........................................... 105
  326.       Jump ................................................... 105
  327.       KbdReady ............................................... 105
  328.       KeySave ................................................ 106
  329.       KeyFromMouse ........................................... 106
  330.       KillMusic .............................................. 106
  331.       LastDrive .............................................. 106
  332.       LastKey ................................................ 106
  333.  
  334.     Computer Tyme * MarxMenu * Table of Contents            Page #6
  335.     -----------------------------------------------------------------
  336.     
  337.       Left ................................................... 107
  338.       Length ................................................. 107
  339.       Ln ..................................................... 107
  340.       Loc .................................................... 107
  341.       LockWord ............................................... 109
  342.       Logoff ................................................. 109
  343.       LogoffTime ............................................. 109
  344.       Logout ................................................. 110
  345.       Loop ................................................... 110
  346.       LoopIndex .............................................. 111
  347.       LoopLevel .............................................. 111
  348.       LoopLimit .............................................. 111
  349.       LowerCase .............................................. 112
  350.       LowWord ................................................ 112
  351.       MachineName ............................................ 112
  352.       MakeListEntry .......................................... 112
  353.       MarxVersion ............................................ 113
  354.       MasterEnvironment ...................................... 113
  355.       Max .................................................... 113
  356.       MatrixInvert ........................................... 113
  357.       Mem .................................................... 113
  358.       MemL ................................................... 114
  359.       MemSize ................................................ 114
  360.       MemW ................................................... 114
  361.       MenuKeyBuffer .......................................... 114
  362.       MhsDirectory ........................................... 115
  363.       MhsMailDirectory ....................................... 115
  364.       MhsReadFile ............................................ 115
  365.       MhsSendDirectory ....................................... 116
  366.       MhsUserDirectory ....................................... 116
  367.       Mid .................................................... 116
  368.       Min .................................................... 116
  369.       MinorDosVersion ........................................ 116
  370.       Minute ................................................. 117
  371.       MinuteOf ............................................... 117
  372.       MkDir .................................................. 117
  373.       Mod .................................................... 117
  374.       ModifyPath ............................................. 117
  375.       Month .................................................. 118
  376.       MonthOf ................................................ 118
  377.       Mouse .................................................. 118
  378.       MouseHorizontal ........................................ 119
  379.       MouseVertical .......................................... 119
  380.       MoveWindow ............................................. 119
  381.       MsDos .................................................. 119
  382.       MxCmd .................................................. 120
  383.       NamePart ............................................... 120
  384.       NetworkVersion ......................................... 120
  385.       NextWord ............................................... 120
  386.       Nil .................................................... 121
  387.       NoBoxBorder ............................................ 121
  388.       NoExit ................................................. 121
  389.       Not .................................................... 121
  390.       NotesLeft .............................................. 121
  391.       NotesPlayed ............................................ 121
  392.       NovAccountExpDate ...................................... 122
  393.  
  394.     Computer Tyme * MarxMenu * Table of Contents            Page #7
  395.     -----------------------------------------------------------------
  396.     
  397.       NovAddUserToGroup ...................................... 122
  398.       NovAddToSet ............................................ 122
  399.       NovAttach .............................................. 122
  400.       NovAttachedServers ..................................... 123
  401.       NovAutoDetach .......................................... 123
  402.       NovBroadcastMode ....................................... 123
  403.       NovCaptureCopies ....................................... 123
  404.       NovCaptureFF ........................................... 124
  405.       NovCaptureForm ......................................... 124
  406.       NovCaptureQueue ........................................ 124
  407.       NovCaptureReset ........................................ 124
  408.       NovCaptureSetup ........................................ 125
  409.       NovCaptureTabSize ...................................... 125
  410.       NovCaptureTimeOut ...................................... 125
  411.       NovCaptureUseBanner .................................... 125
  412.       NovChangePassword ...................................... 126
  413.       NovCleanVolumeName ..................................... 126
  414.       NovClearConnection ..................................... 126
  415.       NovCloseBindery ........................................ 126
  416.       NovCloseSemaphore ...................................... 127
  417.       NovConnection .......................................... 127
  418.       NovConnectionsInUse .................................... 127
  419.       NovConsoleOperator ..................................... 127
  420.       NovCreateObject ........................................ 127
  421.       NovCreateProperty ...................................... 128
  422.       NovDefaultServer ....................................... 128
  423.       NovDeleteFromSet ....................................... 128
  424.       NovDeleteObject ........................................ 129
  425.       NovDeleteProperty ...................................... 129
  426.       NovDetach .............................................. 129
  427.       NovDownServer .......................................... 129
  428.       NovEndCapture .......................................... 130
  429.       NovFreeDirSlots ........................................ 130
  430.       NovFreeVolumeSpace ..................................... 130
  431.       NovForceDownServer ..................................... 130
  432.       NovFullName ............................................ 130
  433.       NovGetConnections ...................................... 131
  434.       NovGetMessage .......................................... 131
  435.       NovGraceLoginReset ..................................... 131
  436.       NovGraceLogins ......................................... 132
  437.       NovGroupMembers ........................................ 132
  438.       NovGroups .............................................. 132
  439.       NovInGroup ............................................. 132
  440.       NovLastLoginDate ....................................... 133
  441.       NovLogin ............................................... 133
  442.       NovLoginName ........................................... 133
  443.       NovLogout .............................................. 134
  444.       NovMapDrive ............................................ 134
  445.       NovMapRoot ............................................. 134
  446.       NovMaxConnections ...................................... 134
  447.       NovMinPasswordLength ................................... 135
  448.       NovMyLoginName ......................................... 135
  449.       NovMyPassword .......................................... 135
  450.       NovMyPrintQueues ....................................... 135
  451.       NovObjectID ............................................ 136
  452.       NovObjects ............................................. 136
  453.  
  454.     Computer Tyme * MarxMenu * Table of Contents            Page #8
  455.     -----------------------------------------------------------------
  456.     
  457.       NovObjectSecurity ...................................... 136
  458.       NovOpenBindery ......................................... 137
  459.       NovOpenSemaphore ....................................... 137
  460.       NovPasswordExpDate ..................................... 137
  461.       NovPreferredServer ..................................... 138
  462.       NovPrimaryServer ....................................... 138
  463.       NovPrintQueues ......................................... 138
  464.       NovPropertySecurity .................................... 138
  465.       NovPropertyValues ...................................... 139
  466.       NovReadGroups .......................................... 140
  467.       NovReadSecurityEquals .................................. 140
  468.       NovRemoveUserFromGroup ................................. 140
  469.       NovRenameObject ........................................ 140
  470.       NovResult .............................................. 141
  471.       NovScanProperties ...................................... 141
  472.       NovScanTrusteePaths .................................... 141
  473.       NovSecurityEquals ...................................... 142
  474.       NovSemaphoreTimeout .................................... 142
  475.       NovSemaphoreUsers ...................................... 142
  476.       NovSemaphoreValue ...................................... 142
  477.       NovServerLogin ......................................... 143
  478.       NovServers ............................................. 143
  479.       NovServerTime .......................................... 143
  480.       NovSendMessage ......................................... 143
  481.       NovSetPreferredServer .................................. 144
  482.       NovSetPrimaryServer .................................... 144
  483.       NovSetProperty ......................................... 144
  484.       NovSignalSemaphore ..................................... 144
  485.       NovStaticObject ........................................ 145
  486.       NovStaticProperty ...................................... 145
  487.       NovStationAddress ...................................... 145
  488.       NovTotalDirSlots ....................................... 146
  489.       NovTotalVolumeSpace .................................... 146
  490.       NovUserInGroup ......................................... 146
  491.       NovUsers ............................................... 146
  492.       NovUsersLoggedIn ....................................... 147
  493.       NovVersionNumber ....................................... 147
  494.       NovVolumeNumber ........................................ 147
  495.       NovVolumes ............................................. 147
  496.       NovWaitOnSemaphore ..................................... 147
  497.       NovWritePropValue ...................................... 148
  498.       NumberOfElements ....................................... 148
  499.       Now .................................................... 148
  500.       NumLock ................................................ 149
  501.       Offset ................................................. 149
  502.       OnKey .................................................. 149
  503.       OnScreenOnly ........................................... 151
  504.       OpenPrinter ............................................ 151
  505.       OptionSwitch ........................................... 151
  506.       Or ..................................................... 152
  507.       Ord .................................................... 152
  508.       OutFile ................................................ 152
  509.       OverKey ................................................ 152
  510.       Overlay ................................................ 153
  511.       PadLeft ................................................ 153
  512.       PadRight ............................................... 153
  513.  
  514.     Computer Tyme * MarxMenu * Table of Contents            Page #9
  515.     -----------------------------------------------------------------
  516.     
  517.       ParallelPorts .......................................... 153
  518.       ParamStr ............................................... 154
  519.       ParentEnvironment ...................................... 154
  520.       Password ............................................... 154
  521.       Path ................................................... 154
  522.       PathPart ............................................... 155
  523.       PauseAfterExecute ...................................... 155
  524.       Pi ..................................................... 155
  525.       PickFile ............................................... 155
  526.       PickMany ............................................... 156
  527.       PickManyPositions ...................................... 156
  528.       PickOne ................................................ 156
  529.       PickPosition ........................................... 157
  530.       Port ................................................... 157
  531.       Pos .................................................... 157
  532.       PosInList .............................................. 157
  533.       PosInSortedList ........................................ 157
  534.       Power .................................................. 158
  535.       Pred ................................................... 158
  536.       Print .................................................. 158
  537.       PrinterName ............................................ 158
  538.       Println ................................................ 159
  539.       PrintScreen ............................................ 159
  540.       Procedure .............................................. 159
  541.       PullMenu ............................................... 161
  542.       Qualifier .............................................. 161
  543.       Random ................................................. 161
  544.       ReadAscTextFile ........................................ 161
  545.       ReadDirectory .......................................... 162
  546.       ReadEnv ................................................ 162
  547.       ReadEnvironment ........................................ 162
  548.       ReadFileBlock .......................................... 163
  549.       ReadKey ................................................ 163
  550.       Readln ................................................. 163
  551.       ReadTextFile ........................................... 164
  552.       Real ................................................... 164
  553.       Reboot ................................................. 165
  554.       ReleaseDate ............................................ 165
  555.       Repeat ................................................. 165
  556.       ResizeWindow ........................................... 165
  557.       Return ................................................. 166
  558.       ReturnCode ............................................. 166
  559.       Right .................................................. 166
  560.       RmDir .................................................. 167
  561.       RollWindow ............................................. 167
  562.       Run .................................................... 167
  563.       SavePosition ........................................... 168
  564.       ScreenHeight ........................................... 168
  565.       ScreenWidth ............................................ 168
  566.       ScrollLock ............................................. 168
  567.       ScrollMove ............................................. 169
  568.       Second ................................................. 169
  569.       SecondOf ............................................... 169
  570.       Security ............................................... 169
  571.       Segment ................................................ 170
  572.       SelectPath ............................................. 170
  573.  
  574.     Computer Tyme * MarxMenu * Table of Contents            Page #10
  575.     -----------------------------------------------------------------
  576.     
  577.       SerialPorts ............................................ 170
  578.       SetArraySize ........................................... 170
  579.       SetEnv ................................................. 170
  580.       SetTopWindow ........................................... 171
  581.       SetWindowUnder ......................................... 171
  582.       Shadow ................................................. 171
  583.       ShadowColor ............................................ 172
  584.       ShadowPosition ......................................... 172
  585.       Shared ................................................. 172
  586.       ShellEnvironment ....................................... 172
  587.       Shl .................................................... 173
  588.       Shr .................................................... 173
  589.       Sin .................................................... 173
  590.       SingleLineBox .......................................... 173
  591.       SmallShadow ............................................ 173
  592.       SortArray .............................................. 174
  593.       Sound .................................................. 174
  594.       SplitPath .............................................. 174
  595.       Sqr .................................................... 174
  596.       StandardIO ............................................. 175
  597.       Str .................................................... 175
  598.       StuffAKey .............................................. 175
  599.       StuffKBD ............................................... 176
  600.       StuffKeyboardNow ....................................... 176
  601.       Succ ................................................... 176
  602.       Suggest ................................................ 176
  603.       TextBackground ......................................... 176
  604.       TextColor .............................................. 177
  605.       TextMode ............................................... 177
  606.       TextPos ................................................ 177
  607.       TextSeek ............................................... 177
  608.       Then ................................................... 177
  609.       TimeOf ................................................. 178
  610.       Timer .................................................. 178
  611.       TimeSeparator .......................................... 178
  612.       TimeString ............................................. 178
  613.       TMaxActiveTasks ........................................ 179
  614.       TMaxCreateTask ......................................... 179
  615.       TMaxCut ................................................ 179
  616.       TMaxDeleteTask ......................................... 179
  617.       TMaxDirectSwitching .................................... 179
  618.       TMaxEMSMemLim .......................................... 180
  619.       TMaxGetPasteBuffer ..................................... 180
  620.       TMaxInstalled .......................................... 180
  621.       TMaxMaxTasks ........................................... 180
  622.       TMaxNameTask ........................................... 180
  623.       TMaxPaste .............................................. 181
  624.       TMaxReadTaskInfo ....................................... 181
  625.       TMaxResult ............................................. 181
  626.       TMaxReturnCount ........................................ 181
  627.       TMaxSetPasteBuffer ..................................... 182
  628.       TMaxSwitchTasks ........................................ 182
  629.       TMaxSwitchToManager .................................... 182
  630.       TMaxTakeOver ........................................... 182
  631.       TMaxTaskOpenFiles ...................................... 182
  632.       TMaxThisTask ........................................... 183
  633.  
  634.     Computer Tyme * MarxMenu * Table of Contents            Page #11
  635.     -----------------------------------------------------------------
  636.     
  637.       TMaxVersion ............................................ 183
  638.       Today .................................................. 183
  639.       Tomorrow ............................................... 183
  640.       Tone ................................................... 183
  641.       TotalDiskSpace ......................................... 184
  642.       TotalEms ............................................... 184
  643.       Trim ................................................... 184
  644.       TrimInputString ........................................ 184
  645.       TrueName ............................................... 184
  646.       UnBlank ................................................ 185
  647.       UniqueFileName ......................................... 185
  648.       Until .................................................. 185
  649.       UpperCase .............................................. 186
  650.       UpperCaseOnly .......................................... 186
  651.       UseArrows .............................................. 186
  652.       UseCommand ............................................. 187
  653.       UsedDiskSpace .......................................... 187
  654.       UseNovPassword ......................................... 187
  655.       Value .................................................. 187
  656.       Var .................................................... 188
  657.       VarType ................................................ 188
  658.       VideoMode .............................................. 188
  659.       VideoPage .............................................. 189
  660.       ViewArray .............................................. 189
  661.       ViewTextFile ........................................... 189
  662.       VinCheckService ........................................ 189
  663.       VinesInt ............................................... 190
  664.       VinesLoaded ............................................ 190
  665.       VinUserName ............................................ 190
  666.       VinSerialNumber ........................................ 190
  667.       Volume ................................................. 190
  668.       Wait ................................................... 190
  669.       WaitOrKbdReady ......................................... 191
  670.       WhereX ................................................. 191
  671.       WhereXAbs .............................................. 191
  672.       WhereY ................................................. 191
  673.       WhereYAbs .............................................. 191
  674.       While .................................................. 191
  675.       WholeFileNames ......................................... 192
  676.       Window ................................................. 192
  677.       WindowHeight ........................................... 192
  678.       WindowWidth ............................................ 192
  679.       WinX ................................................... 192
  680.       WinY ................................................... 193
  681.       WordStarKeys ........................................... 193
  682.       Write .................................................. 193
  683.       WriteCenter ............................................ 193
  684.       WriteError ............................................. 193
  685.       WriteFileBlock ......................................... 193
  686.       Writeln ................................................ 194
  687.       WritelnError ........................................... 194
  688.       WriteTextFile .......................................... 194
  689.       WriteVertical .......................................... 194
  690.       Xor .................................................... 195
  691.       Year ................................................... 195
  692.       YearOf ................................................. 195
  693.  
  694.     Computer Tyme * MarxMenu * Table of Contents            Page #12
  695.     -----------------------------------------------------------------
  696.     
  697.       String Constants ....................................... 195
  698.       Time and Date Constants ................................ 196
  699.       Video Constants ........................................ 196
  700.       Color Constants ........................................ 197
  701.       Boolean Constants ...................................... 197
  702.  
  703.     Computer Tyme * MarxMenu * Users Manual                 Page #1
  704.     -----------------------------------------------------------------
  705.     
  706.      COPYRIGHT     COPYRIGHT     COPYRIGHT
  707.     
  708.     This manual is copyrighted material and all rights are reserved.
  709.     MarxMenu is a programming language which describes to the computer what
  710.     it is supposed to do. Even though some of the individual words in
  711.     MarxMenu are used in other programming languages, I claim a copyright on
  712.     the collection of words which make up the MarxMenu language. I therefore
  713.     consider it an infringement of my CopyRight to create a software product
  714.     which uses the MarxMenu language, or translates MarxMenu source code,
  715.     without purchasing a license to do so.
  716.     
  717.     The combinations of definitions of commands in this manual constitute a
  718.     copyrighted work. Any publication which describes a computer language
  719.     for which the MarxMenu command set is a subset is a violation of the
  720.     copyright of this software and this written manual.
  721.     
  722.     In other words, don't try to clone MarxMenu.
  723.     
  724.     
  725.      LICENSE AGREEMENT:     LICENSE AGREEMENT:     LICENSE AGREEMENT:
  726.     
  727.     You are licensed to use this program on a single CPU or workstation. If
  728.     you are running on a network, you are required to license a separate
  729.     copy for each workstation or a file server license for each file server.
  730.     If you are running on a multiuser operating system such as Concurrent
  731.     DOS, you are required to license a copy for each workstation. Everyone
  732.     who uses this menu, must license a copy unless several people share the
  733.     same workstation.
  734.     
  735.     This software is licensed and not sold. The license begins when Computer
  736.     Tyme receives payment in full. You may not transfer, sell, sublease or
  737.     rent this software without the written consent of Computer Tyme. You are
  738.     not allowed to distribute MarxMenu in runtime form with software you
  739.     developed unless it is in combination with a paid for copy of MarxMenu,
  740.     or you have made special arrangements in writing with Computer Tyme to
  741.     do so.
  742.     
  743.     Use of this product constitutes your acceptance of the terms and
  744.     conditions of this license and of my copyright and your agreement to
  745.     abide by these terms and conditions.
  746.     
  747.     
  748.      MARXMENU WARRANTY:     MARXMENU WARRANTY:     MARXMENU WARRANTY:
  749.     
  750.     The warranty is limited to the diskettes to be machine readable for a
  751.     period of 30 days after purchase. Although we try hard to write perfect
  752.     software that has no bugs, we do not guarantee that. We also do not
  753.     guarantee that this product is fit for every purpose and we are not
  754.     liable for any damages that might occur from use of this product. This
  755.     agreement is governed by the laws of the State of Missouri.
  756.     
  757.     I would like to thank the following people for making this product
  758.     possible:
  759.     
  760.  
  761.     Computer Tyme * MarxMenu * Users Manual                 Page #2
  762.     -----------------------------------------------------------------
  763.     
  764.     Joe Smith and Kevin Moore for helping write this manual. My wife Vicki
  765.     for being good to me and helping with revisions and editing.
  766.     
  767.     The Computer Tyme staff for being the best employees in the world.
  768.     
  769.     Borland International for writing Turbo Pascal and keeping it bug free
  770.     and well supported.
  771.     
  772.     TurboPower Software for their very powerful extensions to Turbo Pascal
  773.     and their well written, well supported product.
  774.     
  775.     All users who actually paid for this product so that we may continue to
  776.     eat.
  777.     
  778.     Those of you who have pointed out bugs and made suggestions to improve
  779.     our product.
  780.     
  781.     
  782.      MARXMENU TRADEMARKS     MARXMENU TRADEMARKS     MARXMENU TRADEMARKS
  783.     
  784.     MarxMenu, DOS ToolBox, Directory Master, and The Network Survival Kit
  785.     are trademarks of Computer Tyme.
  786.     
  787.      QEdit and TEdit are trademarks of SemWare.
  788.      Lotus is a registered trademark of Lotus Development.
  789.      Wordstar is a registered trademark of MicroPro International.
  790.      Smart Software is a trademark of Informix.
  791.      MS-DOS is a trademark of Microsoft.
  792.      Concurrent DOS and DR-DOS are trademarks of Digital Research.
  793.      Turbo Pascal is a trademark of Borland International.
  794.      OPRO and TPRO are trademarks of TurboPower Software.
  795.      Netware and Novell are trademarks of Novell.
  796.      DesqView and QEMM are trademarks of Quarterdeck.
  797.      IBM and OS/2 are trademarks of International Business Machines.
  798.     
  799.      Created using Turbo Pascal
  800.      Copyright 1983-90 by Borland International
  801.     
  802.     
  803.      THE MARXMENU NAME     THE MARXMENU NAME     THE MARXMENU NAME
  804.     
  805.     When I first wrote this program my friends referred to it as Marc's
  806.     Menu. That's where the name MarxMenu came from. It has nothing to do
  807.     with either Carl or Groucho Marx.
  808.     
  809.  
  810.     Computer Tyme * MarxMenu * Users Manual                 Page #3
  811.     -----------------------------------------------------------------
  812.     
  813.      TECHNICAL SUPPORT     TECHNICAL SUPPORT     TECHNICAL SUPPORT
  814.     
  815.     Technical support for MarxMenu is provided several ways. The first is by
  816.     calling our voice line 1-417-866-1222. We would ask that you not call
  817.     the 800 number as that is for orders and ordering information only.
  818.     
  819.     We have several support staff and will try to answer your questions as
  820.     quickly and efficiently as possible. We at Computer Tyme look at
  821.     technical support as an opportunity to improve our product.
  822.     
  823.     We also have a 24 hour 2 line BBS system. This allows users with modems
  824.     to leave messages about support issues. There are several user uploaded
  825.     menus here and it serves as a forum for MarxMenu users to share ideas
  826.     and techniques.
  827.     
  828.     Our BBS number is 1-417-866-1665. It supports 9600 baud but is 2400 baud
  829.     compatible. Use 8 bits, no parity, 1 stop bit (8N1). You will also need
  830.     to set your terminal emulation mode to ANSI or VT100. Do not try to call
  831.     my BBS with 7 bits or even parity. It won't work.
  832.     
  833.     On our BBS are additional sample menu files that other MarxMenu users
  834.     like yourself have uploaded. We encourage you to share your work with
  835.     others so that yet more MarxMenu users can benefit.
  836.     
  837.     We are also available on Compuserve. ID# 76505,1120.
  838.     
  839.     We also offer a Fast Update Service which includes regular upgrades sent
  840.     to you automatically as we come out with them. This doesn't mean every
  841.     version of MarxMenu, but every so often after making several
  842.     improvements and the product is at a stable point. The Fast Update
  843.     Service includes special access to our support BBS.
  844.     
  845.     This service is for the very fierce MarxMenu user who has to have the
  846.     "Latest and Greatest" all the time.
  847.     
  848.     
  849.      INSTALLATION     INSTALLATION     INSTALLATION
  850.     
  851.     You may wish to copy the MarxMenu system into it's own subdirectory
  852.     called MARX to keep the files better organized. However, this is not
  853.     necessary. Copy all the disks that come with MarxMenu into a directory
  854.     on your hard disk or network.
  855.     
  856.     If you do put the menu system in a subdirectory, it must be path
  857.     accessible. That is, you must have a path statement in your AUTOEXEC.BAT
  858.     file that includes the directory where the menu system resides. A
  859.     typical path statement might look like this:
  860.     
  861.      PATH=C:\;C:\DOS;C:\MARX;
  862.     
  863.  
  864.     Computer Tyme * MarxMenu * Users Manual                 Page #4
  865.     -----------------------------------------------------------------
  866.     
  867.     Copy all your Computer Tyme disks to the hard disk or network and type
  868.     INSTALL. Be sure to have your serial number and access code ready. When
  869.     it gets done, you can run some of the sample menus by typing MARX
  870.     <menu>.
  871.     
  872.      -------- V E R Y * I M P O R T A N T --------
  873.     
  874.     MarxMenu requires up to 100 bytes of free environment space. It won't
  875.     run properly without it. The way you get more environment space is to
  876.     add a SHELL command to your CONFIG.SYS file.
  877.     
  878.      SHELL=COMMAND.COM /P /E:nnn
  879.     
  880.     Where NNN is the number of bytes for the environment to reserve. Note
  881.     that if you are running DOS 3.1 then NNN is the number of 16 byte blocks
  882.     to allocate for the environment.
  883.     
  884.     For DOS 3.2 or later:
  885.     
  886.      SHELL=COMMAND.COM /P /E:400
  887.     
  888.     For DOS 3.1:
  889.     
  890.      SHELL=COMMAND.COM /P /E:25
  891.     
  892.     If MarxMenu gives you an environment space error, this is where you go
  893.     to fix it.
  894.     
  895.     
  896.      INSTALLING THE NETWORK SURVIVAL KIT     INSTALLING THE NETWORK SURVIVAL KIT     INSTALLING THE NETWORK SURVIVAL KIT
  897.     
  898.     The Network Survival Kit is installed by copying the distribution disk
  899.     into a directory on your server and typing INSTALL. It will unpack into
  900.     about 2.8 megs of programs and documentation. Be sure to print out the
  901.     DOC files on any programs you are interested in and print out the
  902.     MARXREAD.ME file.
  903.     
  904.     Make sure you do not run the install from the floppy disk.
  905.     
  906.     If you are running the Network Survival Kit on several file servers that
  907.     are bridged together, and you have pruchased several single server
  908.     MarxMenus, be sure to not to install the same serial number on more than
  909.     one file server. MarxMenu is smart enough to detect this.
  910.     
  911.     If you have a multi-server version of MarxMenu, then you can install
  912.     MarxMenu on several fileservers without getting a license violation
  913.     error.
  914.     
  915.  
  916.     Computer Tyme * MarxMenu * Users Manual                 Page #5
  917.     -----------------------------------------------------------------
  918.     
  919.      OVERVIEW OF THE MARXMENU SYSTEM     OVERVIEW OF THE MARXMENU SYSTEM     OVERVIEW OF THE MARXMENU SYSTEM
  920.     
  921.     MarxMenu is not just another fill-in-the-blank menu system. It is a menu
  922.     programming language and job control language. It gives you total
  923.     freedom to do whatever you want, but total freedom has a price. You will
  924.     need to know and understand how to use a text editor. This isn't
  925.     difficult if you are familiar with using a word processor. And you will
  926.     need to have a basic understanding of DOS and how batch files work.
  927.     
  928.     With a text editor you can create a menu file which is a text file with
  929.     an MNU extension. Or, you can copy and then modify the text file
  930.     QUICK.MNU which displays the menus you see when MarxMenu is executed.
  931.     This text file contains a set of instructions for MarxMenu to follow.
  932.     MarxMenu will then read your menu file and run the instructions.
  933.     
  934.      A menu file might look as follows:
  935.     
  936.      DrawBox 31 5 18 4
  937.      UseArrows
  938.      Writeln   '  W - WordStar'
  939.      Write     '  L - Lotus'
  940.     
  941.      OnKey 'W'
  942.         CD\WORDSTAR
  943.         WS
  944.     
  945.      OnKey 'L'
  946.         CD\LOTUS
  947.         LOTUS
  948.     
  949.     The above example is a fully working MarxMenu program. Just because
  950.     MarxMenu has 700 commands doesn't mean you have to use them all. The
  951.     reason there are so many commands is that people keep calling me up and
  952.     asking if I can add such and such. Most of the time I do. That's why the
  953.     manual gets behind sometimes.
  954.     
  955.     The instructions must be from the vocabulary of words that MarxMenu
  956.     understands. These words make up the command list included in this
  957.     manual. They must be used precisely as the instructions in this manual
  958.     tell you to use them. This process is called programming.
  959.     
  960.     I know that for many of you the word programming is a scary word. Put
  961.     your fears at ease, MarxMenu is one of the easiest programming languages
  962.     there is. It is a little harder than writing batch files and a lot
  963.     easier than Basic. It requires a working knowledge of DOS and an
  964.     understanding of writing batch files as explained in your DOS manual.
  965.     
  966.     The point that I want to make is, do not let the fear of learning and
  967.     the fear of programming prevent you from learning to write your own
  968.     menus. If you have never touched a computer before and are sitting down
  969.     with your first PC, read the manuals first. Become familiar with the
  970.     MS-DOS operating system. Learn how to write batch files, make
  971.     subdirectories, copy files, format floppies, etc. If you don't
  972.     understand something, ask a friend. All of us had to learn sometime, and
  973.     there is no such thing as a stupid question.
  974.     
  975.  
  976.     Computer Tyme * MarxMenu * Users Manual                 Page #6
  977.     -----------------------------------------------------------------
  978.     
  979.     After you have mastered some of the basic concepts of the operating
  980.     system, then learn MarxEdit. This is the text editor included with your
  981.     MarxMenu program. Use it to write your own batch files. Then attempt to
  982.     write your own menus by modifying the sample menus (files with a MNU
  983.     extension) which come with MarxMenu. Print these menus and study them,
  984.     referring to this manual for help on command definitions. You do not
  985.     have to completely understand them to start making changes. Programming
  986.     is a trial and error process.
  987.     
  988.     A computer, like a musical instrument, is only as good as the player.
  989.     The more you learn about it the more you'll find it can do. In fact, a
  990.     computer can help raise your effective IQ as you learn the disciplines
  991.     of logic and reason. As a hammer is a tool of the hand, enhancing your
  992.     physical strength, a computer is a tool of the mind, enhancing your
  993.     mental strength. You will learn that as you develop a relationship with
  994.     your computer, that you will be able to process information in ways you
  995.     never dreamed.
  996.     
  997.     MarxMenu is an excellent learning tool. By the time you become
  998.     proficient with the menu language, you will have learned the fundamental
  999.     concepts behind the MS-DOS operating system. You will find yourself
  1000.     going back and forth between this manual and the DOS manual that came
  1001.     with your computer. When you master the language, you will have enough
  1002.     computing skills to be a real resource in your office environment. In
  1003.     this day and age, knowing how to "make the damn things work" is a key in
  1004.     moving up the corporate ladder.
  1005.     
  1006.     If you have sufficient excess income to afford a personal computer, or
  1007.     are in a job that provides you with a workstation, you are smart enough
  1008.     to learn this program. All it requires is that you take the time. You
  1009.     can do it. It is worth your time, and you will make up the time spent in
  1010.     the results you'll get. Good luck and enjoy.
  1011.     
  1012.     
  1013.      WHAT MARXMENU DOES     WHAT MARXMENU DOES     WHAT MARXMENU DOES
  1014.     
  1015.     So with hundreds of menus on the market, what makes this one so great.
  1016.     Well, let me tell you about it. MarxMenu is a menu language rather than
  1017.     a fill in the blank kind of menu. MarxMenu gives you total control of
  1018.     your computer system.
  1019.     
  1020.     It is also a job control language allowing you to program processes too
  1021.     difficult to do with batch files. MarxMenu can be used to do anything
  1022.     from overnight batch job processing to generating control scripts for
  1023.     mainframes.
  1024.     
  1025.     Because of it's simple syntax, MarxMenu makes an excellent teaching
  1026.     language putting more programming power in the hands of the student
  1027.     programmer than any other programming language.
  1028.     
  1029.  
  1030.     Computer Tyme * MarxMenu * Users Manual                 Page #7
  1031.     -----------------------------------------------------------------
  1032.     
  1033.     As a menu, MarxMenu can be as simple or as complex as you want. If you
  1034.     want simple, nothing is easier. If you want POWER, nothing is more
  1035.     powerful. If you want to get really weird, MarxMenu can do really wierd.
  1036.     
  1037.     So if you want the menu to remind you to go vote, MarxMenu knows when
  1038.     the first Teusday after the first Monday in November on even years is.
  1039.     If you are into Astrology, and you want certain menu items to appear
  1040.     only if Mars is in the right place in the sky, MarxMenu can calculate
  1041.     the orbit of Mars for you.
  1042.     
  1043.     MarxMenu can be used to program games, write running software demos and
  1044.     online tutorial programs. It can be used to write testing programs. It
  1045.     can be used to write custom software installation programs. It can be
  1046.     used to assist other applications to make other software more network
  1047.     friendly.
  1048.     
  1049.     MarxMenu has a compiler for high speed execution. Even very large menus
  1050.     come up in under 4 seconds on a 4.77mhz IBM XT on an ArcNet lan. The
  1051.     compiler also provides security in that you can keep your source files
  1052.     separate so no one can alter the menu files.
  1053.     
  1054.     
  1055.      THE MARX.BAT FILE     THE MARX.BAT FILE     THE MARX.BAT FILE
  1056.     
  1057.     In order for MarxMenu to work, a MARX.BAT file must be created. This is
  1058.     done by typing INSTALL. The first thing that INSTALL does is unpack the
  1059.     compressed menu files and documentation files. Then it will bring up the
  1060.     installation menu.
  1061.     
  1062.     The MARX.BAT file looks like this:
  1063.     
  1064.      @ECHO OFF
  1065.      C:\MARX\MARXMENU.EXE %1
  1066.      %MXCMD%
  1067.      %0 %1
  1068.     
  1069.     The first line of MARX.BAT turns the echo off. This may be changed to
  1070.     ECHO ON for debugging purposes. PAUSE commands can be inserted to debug
  1071.     a menu. This allows you to see what's going on.
  1072.     
  1073.     The second line of MARX.BAT runs MARXMENU.EXE. The second parameter %1
  1074.     is the name of the menu file to run. A third parameter can be added to
  1075.     tell MarxMenu to use a specific directory for creating temporary batch
  1076.     files. Otherwise MarxMenu will create temporary batch files in the same
  1077.     directory as MARXMENU.EXE.
  1078.     
  1079.     When the user selects a program to run, MarxMenu writes a temporary
  1080.     batch file which contains within it the commands to run the program.
  1081.     Then MarxMenu writes a command to the environment variable MXCMD to
  1082.     execute the temporary batch file and exits.
  1083.     
  1084.  
  1085.     Computer Tyme * MarxMenu * Users Manual                 Page #8
  1086.     -----------------------------------------------------------------
  1087.     
  1088.     What it writes depends on the version of DOS you are running. If you are
  1089.     running DOS 3.3 or later, MXCMD is set to CALL <batch>. If you are
  1090.     running an earlier version of DOS then MXCMD is set to COMMAND /C
  1091.     <batch>.
  1092.     
  1093.     Whatever command is written to MXCMD is executed in line 3. This usually
  1094.     calls the temporary batch file that MarxMenu created. This executes your
  1095.     program and returns to MARX.BAT.
  1096.     
  1097.     Line four jumps back to the beginning of the batch file and starts all
  1098.     over. %0 is MARX.BAT and %1 is the name of the menu you are running.
  1099.     
  1100.              MARX.BAT
  1101.              --------   +--MarxMenu Creates--+
  1102.       +----> @ECHO OFF  |                    |
  1103.       |      MARXMENU.EXE %1                 |
  1104.       |      %MXCMD% >--+                    +-> $MX00000.BAT
  1105.       | +--> MARX %1 +  |                        ------------
  1106.       | |            |  +----------------------> CD\WORDSTAR
  1107.       +-|------<-----+                           WS --+
  1108.         |                                             |
  1109.         +-------------------------------------------<-+
  1110.     
  1111.      Note: MarxMenu sets MXCMD = CALL $MX00000.BAT
  1112.     
  1113.     You can also tell MarxMenu where to put it's temporary batch files by
  1114.     setting an environment variable TEMP to point to a temporary file
  1115.     directory.
  1116.     
  1117.      Example: SET TEMP=F:\TMPFILES
  1118.     
  1119.     This is compatible with the way DOS 5 and Windows uses temp files.
  1120.     
  1121.     When you exit the menu system. MarxMenu sets MXCMD to MXSTOP. This jumps
  1122.     to a batch file called MXSTOP which gets you out of MARX.BAT. MXSTOP.BAT
  1123.     can be modified to control what happens when MarxMenu is exited.
  1124.     
  1125.     The default MXSTOP.BAT file is as follows.
  1126.     
  1127.      SET MXCMD=
  1128.      SET KSV=
  1129.      REM You can control menu exiting with this file!
  1130.     
  1131.     Note that by adding your own commands to MXSTOP that you can control
  1132.     what happens when you exit. You could loop right back to the menu if you
  1133.     want. Or, you could force a controlled network logoff.
  1134.     
  1135.     I strongly recommend upgrading to DOS 3.3 or later whenever it is
  1136.     possible to do so.
  1137.     
  1138.  
  1139.     Computer Tyme * MarxMenu * Users Manual                 Page #9
  1140.     -----------------------------------------------------------------
  1141.     
  1142.     The name of the temporary batch file is as follows:
  1143.     
  1144.                       $MX00000.BAT
  1145.                           ||||
  1146.             Shells--------+|++--------Network Station (Hex)
  1147.                       Task Number
  1148.     
  1149.     The 5 zeros are used for single user versions of MarxMenu. On a network
  1150.     they change as follows:
  1151.     
  1152.     The last 2 zeros is the station number on the network. This is either
  1153.     read directly from the shell, if you are using Novell, or from the
  1154.     environment variable STATION if you are on another network. The third
  1155.     zero is the task number if you are running DesqView, or from an
  1156.     environment variable TASK if you are running some other multitasker.
  1157.     
  1158.     The second zero is replaced by one less than the number of COMMAND.COM
  1159.     shells you are running. This way if you run COMMAND.COM under MarxMenu
  1160.     and then run MarxMenu again under that, it doesn't get lost when you
  1161.     exit.
  1162.     
  1163.     The first zero is for future expansion. In case something comes along
  1164.     that I haven't thought of.
  1165.     
  1166.     If you want to do custom tricks, MarxMenu has an internal variable
  1167.     called MxCmd. Setting this to your own command overrides the way
  1168.     MarxMenu would normally use it.
  1169.     
  1170.     But now you ask, does MarxMenu leave a trail of batch files that will
  1171.     clutter up my drive or network? Not at all. MarxMenu keeps using the
  1172.     same names over and over again. If a user crashed his system, it might
  1173.     leave a batch file but it would be overwritten the next time he used the
  1174.     menu. Not only that, all batch files can be kept in the same directory
  1175.     so cleaning up is as simple as typing DEL $MX*.BAT!
  1176.     
  1177.     By writing to the MxCmd variable you can run an EXE or COM file directly
  1178.     without having to create another batch file.
  1179.     
  1180.      Example:
  1181.         OnKey 'M'
  1182.            |MxCmd = 'RAMMAP'
  1183.     
  1184.     This runs RamMap directly from the MARX.BAT file.
  1185.     
  1186.     Another trick is to run another batch file without the CALL statement.
  1187.     This creates a one way jump to another batch file.
  1188.     
  1189.     Another debugging feature. You can change the first line of the MARX.BAT
  1190.     file as follows:
  1191.     
  1192.  
  1193.     Computer Tyme * MarxMenu * Users Manual                 Page #10
  1194.     -----------------------------------------------------------------
  1195.     
  1196.      @ECHO %MXECHO%
  1197.     
  1198.     This allows you to turn the echo on for debugging purposes by typing:
  1199.     
  1200.      SET MXECHO=ON
  1201.     
  1202.     This way you don't have to change the MARX.BAT file to debug. If you use
  1203.     this, make sure that MXECHO is set to either ON or OFF.
  1204.     
  1205.     
  1206.      DROPTO.BAT     DROPTO.BAT     DROPTO.BAT
  1207.     
  1208.     If you are going to run a shell like COMMAND.COM under MarxMenu it is
  1209.     sometimes better to use DROPTO.BAT which is created during the install
  1210.     process. DropTo allows you to jump from the temporary batch file that
  1211.     MarxMenu creates to DropTo, which deletes the temporary batch file and
  1212.     executes the rest of the command line.
  1213.     
  1214.      Usage: DROPTO %0 COMMAND.COM
  1215.     
  1216.     If you are using DropTo inside a MarxMenu, the %0 is automatically added
  1217.     for you.
  1218.     
  1219.      Example:
  1220.         OnKey 'C'
  1221.            DropTo COMMAND.COM
  1222.     
  1223.      DROPTO.BAT
  1224.      ----------
  1225.      DEL %1
  1226.      SET KSV=
  1227.      SET MXCMD=
  1228.      %2 %3 %4 %5 %6 %7 %8 %9
  1229.     
  1230.     Here's how it works:
  1231.     
  1232.          $MX00000.BAT <------deletes this file--------+
  1233.          ------------                                 |
  1234.          DROPTO %0 COMMAND.COM ------------> DEL %1 >-+
  1235.                                              SET KSV=
  1236.                                              SET MXCMD=
  1237.                   %2 executes COMMAND.COM--> %2 %3 %4 %5 %6 %7 %8 %9
  1238.     
  1239.     The advantages are that the temporary batch file is eliminated so if the
  1240.     user never returns to the menu, it leaves no temporary file to clutter
  1241.     up the drive. Also, DROPTO.BAT becomes the pending batch file that is
  1242.     running rather than the temporary file.
  1243.     
  1244.  
  1245.     Computer Tyme * MarxMenu * Users Manual                 Page #11
  1246.     -----------------------------------------------------------------
  1247.     
  1248.      SUPPORT FOR EARLY DOS VERSIONS     SUPPORT FOR EARLY DOS VERSIONS     SUPPORT FOR EARLY DOS VERSIONS
  1249.     
  1250.     There are two main differences between DOS versions earlier than 3.3 and
  1251.     versions 3.3 and above. One is the CALL command for batch files and the
  1252.     other is the way you specify environment space when using COMMAND.COM.
  1253.     
  1254.     I have enhanced the support for early DOS versions (3.1, 3.2). MarxMenu
  1255.     executes COMMAND /C /E:nn (batchfile) >NUL to have one batch file call
  1256.     another. The first two lines of the batch files created are as follows:
  1257.     
  1258.      ECHO OFF
  1259.      CTTY CON
  1260.      ....
  1261.     
  1262.     This eliminates the ECHO OFF from being seen.
  1263.     
  1264.     Also whenever possible, when MarxMenu loads up a copy of COMMAND.COM, it
  1265.     adds the /E:nnn command to set the environment space to the same as that
  1266.     of the Master Environment. In version 3.1 it is translated to paragraphs
  1267.     instead of bytes.
  1268.     
  1269.     One thing to note in early versions of DOS. If you run a batch file
  1270.     under COMMAND /C and your batch file has SET commands to set environment
  1271.     variables, the changes you make will disappear as soon as you get back
  1272.     to MARX.BAT. Why? Because you loaded another COMMAND.COM and the SET
  1273.     commands set its environment. When this COMMAND.COM ends, it takes its
  1274.     environment with it. Under DOS 3.3 or later, which uses CALL instead of
  1275.     another shell, the SET commands live. (Yet another reason to upgrade).
  1276.     
  1277.     
  1278.      ABOUT ENVIRONMENT VARIABLES     ABOUT ENVIRONMENT VARIABLES     ABOUT ENVIRONMENT VARIABLES
  1279.     
  1280.     I've been talking a lot about environment variables. Some of you out
  1281.     there in novice land don't know what an environment variable is. Many
  1282.     others don't know the intricate secrets handed down from the Great DOS
  1283.     Masters who know all the intricate undocumented features of DOS.
  1284.     
  1285.     Your DOS shell, COMMAND.COM owns an area of memory called the Master
  1286.     Environment. It contains strings in the form Name=Value. Included among
  1287.     those strings are your COMSPEC and your PATH. Your COMSPEC tells DOS and
  1288.     other programs where to find COMMAND.COM. Your PATH tells DOS and other
  1289.     programs what directories to search when loading programs. Another
  1290.     common environment variable is your PROMPT. This controls what your DOS
  1291.     prompt will look like.
  1292.     
  1293.     Environment variables are commonly set using the SET command. This is
  1294.     done by typing SET NAME=VALUE.
  1295.     
  1296.      Example:
  1297.         SET COLOR=BLUE
  1298.     
  1299.  
  1300.     Computer Tyme * MarxMenu * Users Manual                 Page #12
  1301.     -----------------------------------------------------------------
  1302.     
  1303.     So what does this actually do? Actually nothing, unless you have a
  1304.     program that reads the environment variables that is looking for one
  1305.     called COLOR. This way, environment variables can be used to leave
  1306.     messages to other programs and control how they behave.
  1307.     
  1308.     Besides leaving messages, environment variables can be accessed by batch
  1309.     files. If you use %NAME% in a batch file, DOS will substitute the VALUE
  1310.     of the variable for the %NAME% expression. And this feature is important
  1311.     to MarxMenu's operation.
  1312.     
  1313.     MarxMenu uses an environment variable called MXCMD. In the MARX.BAT file
  1314.     the third line is %MXCMD%. So MarxMenu controls MARX.BAT by writing
  1315.     values to MXCMD.
  1316.     
  1317.     In order to do this, there must be enough room in the environment for
  1318.     the command to fit. That is why you need to make sure that you have a
  1319.     SHELL command in your CONFIG.SYS to set space for MarxMenu to use.
  1320.     
  1321.     Now so far I've only talked about the Master Environment. That's the one
  1322.     that the first COMMAND.COM owns. Each program that is loaded, including
  1323.     TSRs, gets a copy of the Master Environment in its own environment. This
  1324.     is called the CURRENT Environment.
  1325.     
  1326.     One interesting feature of the Current Environment is that it is smaller
  1327.     than the Master Environment. DOS only creates enough space to hold a
  1328.     copy of the space used in the Master Environment and a little more to
  1329.     store the name of the program that is running.
  1330.     
  1331.     If one program executes another program, the environment of the parent
  1332.     program is called the Parent Environment. You will probable never need
  1333.     to deal with the Parent Environment but MarxMenu can access it in case
  1334.     you do.
  1335.     
  1336.     Another environment is the SHELL ENVIRONMENT. This is the one that THEY
  1337.     never talk about. The one you'll never read about in any books. The one
  1338.     you'll never learn about in any DOS classes. This is the one your
  1339.     parents never mentioned.
  1340.     
  1341.     The Shell Environment is normally the same as the Master Environment.
  1342.     But, if you are running more than one level of COMMAND.COM, the Shell
  1343.     Environment is the environment of the last COMMAND.COM in memory. This
  1344.     environment is the most important environment to MarxMenu.
  1345.     
  1346.     So why load up two or more COMMAND.COMs? There are several cases where
  1347.     this could occur. One case is when you want to run COMMAND.COM as a
  1348.     program under MarxMenu. This way you can type EXIT to get back to the
  1349.     menu. If you do this and then run MarxMenu again, you have two levels of
  1350.     COMMAND.COM. In this case, the first COMMAND.COM is the Master
  1351.     Environment and the second COMMAND.COM is the Shell Environment.
  1352.     
  1353.  
  1354.     Computer Tyme * MarxMenu * Users Manual                 Page #13
  1355.     -----------------------------------------------------------------
  1356.     
  1357.     Another place where more than one COMMAND.COM is used is if you are
  1358.     running Microsoft Windows 3 or DesqView. Both of these programs are able
  1359.     to run a DOS shell. When you do, this is a second level of COMMAND.COM.
  1360.     
  1361.     What is important is that SET commands and %NAME% commands in batch
  1362.     files deal only with the Shell Environment and not the Master
  1363.     Environment.
  1364.     
  1365.     
  1366.      DEALING WITH MULTIPLE DOS SHELLS     DEALING WITH MULTIPLE DOS SHELLS     DEALING WITH MULTIPLE DOS SHELLS
  1367.     
  1368.     If you are running more than one level of COMMAND.COM (Shelling from
  1369.     Windows, DesqView, Word Perfect Office) and having environment space
  1370.     problems here's a trick. Before you load up your fancy shells, put this
  1371.     in a batch file like your AUTOEXEC.BAT.
  1372.     
  1373.      SET MXCMD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  1374.     
  1375.     This variable will be trashed by MarxMenu thus freeing up the
  1376.     environment space it occupied. This will not only allow MarxMenu to run
  1377.     but may solve problems with other programs you are running that need
  1378.     environment space as well.
  1379.     
  1380.     
  1381.      MARXMENU AND TSR CONTROL     MARXMENU AND TSR CONTROL     MARXMENU AND TSR CONTROL
  1382.     
  1383.     MarxMenu along with the TSR utilities that come with MarxMenu, can load
  1384.     and unload TSRs under menu control. This is handy when you want to run a
  1385.     big application and need to free up some memory to do it. Since MarxMenu
  1386.     is a 0k menu system, unloading TSRs is possible but it has it's tricks.
  1387.     
  1388.     The problem you run into is that when one batch file calls another batch
  1389.     file, the way MarxMenu normally runs, DOS creates a small batch file
  1390.     control block in memory. This control block stays in memory after the
  1391.     TSR is released creating a region of trapped memory. Although this
  1392.     memory is freed, it isn't usable.
  1393.     
  1394.     The way around it is to jump to the batch file that releases memory
  1395.     instead of calling it. This is done by setting MXCMD to the name of the
  1396.     batch file you want to run. The only problem is that when you jump to
  1397.     the other batch file, it won't automatically return to MARX.BAT. You
  1398.     must therefore end your batch file with a command bringing you back to
  1399.     MARX.BAT.
  1400.     
  1401.      MEMHOG.BAT
  1402.      -----------
  1403.      Rem UnLoad SideKick
  1404.      RELEASE SK
  1405.      CD\MEMHOG
  1406.      MEMHOG
  1407.      MARK SK
  1408.      SK
  1409.      MARX MAIN
  1410.     
  1411.  
  1412.     Computer Tyme * MarxMenu * Users Manual                 Page #14
  1413.     -----------------------------------------------------------------
  1414.     
  1415.     In your MAIN menu:
  1416.     
  1417.      OnKey 'H'
  1418.         |MxCmd = MEMHOG
  1419.     
  1420.     See the documentation file on the TSR utilities disk for more
  1421.     information on how to use MARK and RELEASE.
  1422.     
  1423.     
  1424.      SAMPLE MENUS ON DISK     SAMPLE MENUS ON DISK     SAMPLE MENUS ON DISK
  1425.     
  1426.     The MarxMenu disk contains many sample menus for you to start with.
  1427.     Which one depends on what your needs are. Typically on a single user
  1428.     system you might start with QUICK or LEVEL1 menus.
  1429.     
  1430.     To start with the QUICK menu, copy it to a different name such as MY.MNU
  1431.     as follows:
  1432.     
  1433.      COPY QUICK.MNU MY.MNU
  1434.     
  1435.     Then edit MY.MNU with your favorite editor. You will quickly see how
  1436.     this menu works and will be able to substitute your programs for the
  1437.     ones it is set up for. You can then test and run your menu by typing
  1438.     MARX MY.
  1439.     
  1440.     If you want more of a self configuring menu you might try the LEVEL1
  1441.     menu. This menu requires no text editor coding and lets you set up menus
  1442.     interactively.
  1443.     
  1444.     On a Novell network you might start with the QUICKNOV menu or translate
  1445.     your existing Novell menus with NOVTRANS. The LOGIN menu requires a lot
  1446.     of customization for your system. I wouldn't start on this menu until
  1447.     your regular menus are written.
  1448.     
  1449.     The examples on disk show a variety of uses for MarxMenu. They can be
  1450.     used like libraries of routines to cut code from and paste into your
  1451.     application. A good way to learn MarxMenu is to print out the example
  1452.     menus and study the code.
  1453.     
  1454.     
  1455.      NETWORK USERS:     NETWORK USERS:     NETWORK USERS:
  1456.     
  1457.     The main thing you have to worry about on a network is to make sure that
  1458.     when MarxMenu creates a temporary batch file, that it is a different one
  1459.     for each user on the network.
  1460.     
  1461.     This is handled several ways. If you are on a Novell network, MarxMenu
  1462.     uses your station number as part of the name for the temporary batch
  1463.     file. If you are not using Novell, then you will need to set an
  1464.     environment variable STATION for each workstation on your net. Each one
  1465.     has to be a different number.
  1466.     
  1467.  
  1468.     Computer Tyme * MarxMenu * Users Manual                 Page #15
  1469.     -----------------------------------------------------------------
  1470.     
  1471.      Example:
  1472.         SET STATION=5
  1473.     
  1474.     You must ensure that the user has enough access rights to create
  1475.     temporary batch files in the directory selected for temporary batch
  1476.     files. One solution is to create a batch file directory and give all the
  1477.     users full access rights to it.
  1478.     
  1479.     MarxMenu has been run on about every DOS based network that exists. If
  1480.     the network runs at all it will generally run MarxMenu. Among the
  1481.     networks that come to mind are Novell, Lantastic, Banyan, 3COM, Lan
  1482.     Manager, IBM, DECNET, ConCurrent DOS, PCMOS, and SCO VPIX. MarxMenu is
  1483.     running on networks as small as two users to as large as 20,000 users.
  1484.     In fact, the bigger your network, the more you need MarxMenu.
  1485.     
  1486.     If you are running LANTASTIC and get a "sharing violation" error when
  1487.     two people try running the menu at the same time, try setting
  1488.     MARXMENU.OVR to READ ONLY.
  1489.     
  1490.     
  1491.      NETWORK MENU STRATEGY     NETWORK MENU STRATEGY     NETWORK MENU STRATEGY
  1492.     
  1493.     One of the main features of MarxMenu is the ability to create "smart"
  1494.     menus. This allows you to have a single menu that everybody runs but
  1495.     each user sees different selections based on what their access rights
  1496.     are, what groups they are in, what kind of hardware is available, or
  1497.     what workstation they are on.
  1498.     
  1499.     The group access feature is a very good example of using the power of
  1500.     MarxMenu. The idea here is that for instance under Novell you would put
  1501.     users in groups and have menu selections appear based on group
  1502.     membership. Thus only the accounting department sees the payroll
  1503.     selection.
  1504.     
  1505.     On non Novell networks you can group users by having them in a text file
  1506.     list of members. Then you can read the list and test if they are in the
  1507.     list. You can also read environment variables and control choices based
  1508.     on the result.
  1509.     
  1510.     The rule with networks is to keep things as consistent and simple as
  1511.     possible. A simple well documented network is a happy network, and it
  1512.     can make the difference whether you go home on the weekends or stay at
  1513.     the office.
  1514.     
  1515.  
  1516.     Computer Tyme * MarxMenu * Users Manual                 Page #16
  1517.     -----------------------------------------------------------------
  1518.     
  1519.      USING TRUENAME ON NETWORKS     USING TRUENAME ON NETWORKS     USING TRUENAME ON NETWORKS
  1520.     
  1521.     Besides using drive letters, networks use a file and directory naming
  1522.     convention called TrueName. The MarxMenu TrueName function returns the
  1523.     true name of a file. TrueName files are specified as fillows:
  1524.     
  1525.      Microsoft Networks:
  1526.        \\SERVER\DIRECTORY\FILE
  1527.     
  1528.      Novell Netware:
  1529.        \\SERVER\VOLUME\DIRECTORY\FILE
  1530.     
  1531.     By using TrueNames you can specify files and directories on the network
  1532.     without having to map drive letters or make redirection list entries. If
  1533.     a TrueName of a string ends in a '\' then it is at the root directory.
  1534.     
  1535.      Example:
  1536.        C:\                ;root of C
  1537.        \\TYME\SYS\        ;root of server
  1538.        \\TYME\SYS\PUBLIC  ;not root directory
  1539.     
  1540.     
  1541.      NOVELL USERS:     NOVELL USERS:     NOVELL USERS:
  1542.     
  1543.     Novell is the most popular network on the market. We have added many
  1544.     enhancements for Novell networks to support things like logging in and
  1545.     logging out, drive mapping, group support, software metering, and status
  1546.     information.
  1547.     
  1548.     Although Novell is a high quality solid product it has its own
  1549.     "Personality" and many undocumented features otherwise known as bugs.
  1550.     Most people who are having trouble with MarxMenu under Novell are really
  1551.     having trouble with Novell. Quite frankly, we do more Novell support
  1552.     than we do MarxMenu support.
  1553.     
  1554.     Having said that, I own two Novell networks. One at the lab and one at
  1555.     home and I love my networks. But, I have spent hundreds of hours
  1556.     learning all the tricks. And to save you a phone call, and me a lot of
  1557.     time, I've decided to share these tricks here in my manual.
  1558.     
  1559.     Some of these tricks are from the Great Network Gurus themselves who are
  1560.     so advanced that they no longer exist in physical form. These people
  1561.     live in another dimension of total mental existence and can only be
  1562.     reached by modem. Some of them hang out on Compuserve.
  1563.     
  1564.     I therefore strongly recommend that if you are a serious Novell user
  1565.     that you join Compuserve and hang out in the Novell section. And just
  1566.     because not everyone on Compuserve is a real person doesn't mean that
  1567.     you should feel uncomfortable asking them any question about your
  1568.     network that you need to ask.
  1569.     
  1570.  
  1571.     Computer Tyme * MarxMenu * Users Manual                 Page #17
  1572.     -----------------------------------------------------------------
  1573.     
  1574.      THE NOVELL MENU TRANSLATOR     THE NOVELL MENU TRANSLATOR     THE NOVELL MENU TRANSLATOR
  1575.     
  1576.     One nice bonus with Novell networks is that MarxMenu can translate your
  1577.     Novell menus to MarxMenu. This saves you the time of having to recode
  1578.     your system. What you do is type:
  1579.     
  1580.      MARXMENU NOVTRANS <menu>   <- Right Way
  1581.      MARX NOVTRANS <menu>       <- Wrong Way
  1582.     
  1583.     This translates your Novell MNU file to a MarxMenu MRX file. Your MNU
  1584.     file is unchanged. MarxMenu creates a TMP file containing the source
  1585.     code for the MRX file. Once you are satisfied with the MarxMenu file,
  1586.     you just delete the MNU file and rename the TMP file to MNU and forget
  1587.     that you ever had a Novell menu.
  1588.     
  1589.     Once the menu is translated you run it by typing MARX <menu> instead of
  1590.     MENU <menu>. MarxMenu can run Novell's menu better than Novell runs
  1591.     their own.
  1592.     
  1593.     Sometimes the translator isn't perfect and it takes a little tweaking of
  1594.     the original menu file for the translator to work properly.
  1595.     
  1596.     After you are satisfied with the translation you can then start
  1597.     enhancing your menus by editing the new translated menus. You might want
  1598.     to run QUICKNOV and look at it's features. If you like what you see you
  1599.     can use your editor to cut and paste code from QUICKNOV.MNU into your
  1600.     menus. You can also start adding NovInGroup commands to create
  1601.     conditional menus. Under MarxMenu you can have one single smart menu for
  1602.     everybody instead of a lot of individual menus.
  1603.     
  1604.     
  1605.      LOGGING OUT UNDER MENU CONTROL     LOGGING OUT UNDER MENU CONTROL     LOGGING OUT UNDER MENU CONTROL
  1606.     
  1607.     Logging out under menu control is one of the trickiest things to do. The
  1608.     problem is that as soon as LOGOUT executes, you no longer have access to
  1609.     the network. This means that if you are in a batch file, you are going
  1610.     to get a "Missing Batch File" error, unless the batch file is in the
  1611.     \LOGIN directory.
  1612.     
  1613.     Another problem with logging out is making sure that your COMSPEC is
  1614.     pointing to a COMMAND.COM that is either on the local drive or in the
  1615.     \LOGIN directory. Otherwise you will get a "Cannot load COMMAND.COM"
  1616.     error.
  1617.     
  1618.     Another problem that you need to deal with is that your PATH command
  1619.     needs to be changed so that it doesn't refer to mapped drives that are
  1620.     no longer accessable.
  1621.     
  1622.     If you are logging off with a batch file, the batch file must be in the
  1623.     login directory or a local drive. If it is in the login directory your
  1624.     current drive must be the first network drive (usually F:) and this
  1625.     drive must not be map rooted to any directory.
  1626.     
  1627.  
  1628.     Computer Tyme * MarxMenu * Users Manual                 Page #18
  1629.     -----------------------------------------------------------------
  1630.     
  1631.     What you need to do is create a batch file in the \LOGIN directory
  1632.     called OFF.BAT.
  1633.     
  1634.      Example: F:\LOGIN\OFF.BAT
  1635.     
  1636.      SET COMSPEC=C:\COMMAND.COM
  1637.      LOGOUT
  1638.      C:
  1639.      PATH=C:\DOS
  1640.     
  1641.     To run this file the current directory must be F:\LOGIN. When using the
  1642.     MarxMenu command Logoff, MarxMenu changes to the \LOGIN directory of the
  1643.     first network drive, removes any map roots on this drive, and runs
  1644.     OFF.BAT.
  1645.     
  1646.     Setting up an OFF.BAT file is compatible with MarxMenu's automatic
  1647.     network logoff feature. This is where you can set the amount of time to
  1648.     wait at a menu before it automatically logs you off the network.
  1649.     
  1650.     Another way to logout under MarxMenu is to stuff the LOGOUT command into
  1651.     the keyboard buffer and exit MarxMenu.
  1652.     
  1653.      Example:
  1654.         OnKey ESC
  1655.           |StuffKBD 'LOGOUT' + CR
  1656.           |ExitMenu
  1657.     
  1658.     Another logout trick is to use the LOGOFF utility from the Computer Tyme
  1659.     Network Survival Kit. This program automatically fixes your PATH and
  1660.     COMSPEC after the logoff occurs.
  1661.     
  1662.     
  1663.      LOGGING IN WITH MARXMENU     LOGGING IN WITH MARXMENU     LOGGING IN WITH MARXMENU
  1664.     
  1665.     If there is any one thing that's trickier than logging out of a Novell
  1666.     network, its logging in. I have spent MANY hours struggling with Novell
  1667.     trying to get it right and I have finally figured it out. Much of this
  1668.     comes from the Novell gurus who hang out on Compuserve and know
  1669.     everything there is to know about Novell.
  1670.     
  1671.     The first thing you need to do is make up your mind that you are going
  1672.     to do it right. The technique here might seem somewhat cumbersome, but
  1673.     it works well and will keep you out of trouble.
  1674.     
  1675.     MarxMenu has the ability to log you into a network, map your drives, and
  1676.     set your environment strings without having to touch a Novell utility to
  1677.     do so. MarxMenu can completely eliminate the need for Novell login
  1678.     scripts. The advantage to using MarxMenu in the login is that you have
  1679.     the power of 600 commands to work with instead of just 25 or so.
  1680.     
  1681.  
  1682.     Computer Tyme * MarxMenu * Users Manual                 Page #19
  1683.     -----------------------------------------------------------------
  1684.     
  1685.      USING NOVELL'S LOGIN     USING NOVELL'S LOGIN     USING NOVELL'S LOGIN
  1686.     
  1687.     For those of you who want to stay with Novell's login program here's
  1688.     some tips to keep you out of trouble (And my tech support lines open).
  1689.     
  1690.     The last command in your system login script needs to be EXIT "batch
  1691.     name". This batch file will be the continuation of your login logic and
  1692.     end up jumping to the menu system. This is where TSR's can be loaded.
  1693.     
  1694.     Never load a TSR or run the menu from within a login script. Until the
  1695.     login script finishes, LOGIN.EXE is in memory and it uses over 100k.
  1696.     
  1697.     The first rule is don't use personal login scripts unless you have to.
  1698.     The simpler the login, the easier it is to maintain. Try to do as much
  1699.     as possible in the batch file you exit to.
  1700.     
  1701.     MarxMenu can be run from this batch file as a post login processor. In
  1702.     this case MarxMenu isn't being used as a menu but as a programming
  1703.     language that is capable of very powerful login logic. The batch file
  1704.     might look as follows:
  1705.     
  1706.      MARXMENU POST.MNU
  1707.      <load TSR's>
  1708.      MARX MAIN
  1709.     
  1710.     In POST.MNU you can set environment variables, test for directories,
  1711.     write batch files, read user lists, map drives, or any number of things
  1712.     that are useful to the login process.
  1713.     
  1714.     
  1715.      THE CONFIG.SYS FILE     THE CONFIG.SYS FILE     THE CONFIG.SYS FILE
  1716.     
  1717.     The place to start is the place where DOS starts when DOS boots. You
  1718.     MUST create a CONFIG.SYS file on your boot disk. The CONFIG.SYS tells
  1719.     DOS how many files and buffers to create, what device drivers to load,
  1720.     and the size of the Master Environment.
  1721.     
  1722.     Unless you are using special drivers, BUFFERS=40 and FILES=40 is a good
  1723.     place to start. STACKS 0,0 will gain you an extra 3k of ram. But the
  1724.     most important command is the shell statement. A CONFIG.SYS file might
  1725.     look like this:
  1726.     
  1727.      SHELL=COMMAND.COM /P /E:400
  1728.      BUFFERS=40
  1729.      FILES=40
  1730.      DEVICE=ANSI.SYS
  1731.     
  1732.     This sets up enough environment space to allow MarxMenu and DOS SET
  1733.     commands to work properly. You will also want to load any other device
  1734.     drivers like QEMM386.SYS or 386MAX.SYS to take advantage of other
  1735.     features of your computer. If you don't know about CONFIG.SYS files,
  1736.     read the DOS manual.
  1737.     
  1738.  
  1739.     Computer Tyme * MarxMenu * Users Manual                 Page #20
  1740.     -----------------------------------------------------------------
  1741.     
  1742.     Network Note: If you don't have a local hard disk and are booting from a
  1743.     floppy drive, set BUFFERS=4. If you are booting from a diskless
  1744.     workstation, set BUFFERS=1. BUFFERS are used for local drives only and
  1745.     have no effect on network drives. You save 1k of memory for every 2
  1746.     buffers you don't use.
  1747.     
  1748.     
  1749.      THE AUTOEXEC.BAT FILE     THE AUTOEXEC.BAT FILE     THE AUTOEXEC.BAT FILE
  1750.     
  1751.     After the CONFIG.SYS is loaded the AUTOEXEC.BAT runs next. Here you load
  1752.     up your TSRs and network drivers. There are some important tricks to be
  1753.     used here as well.
  1754.     
  1755.     First of all, never load your network shell from your AUTOEXEC.BAT file.
  1756.     Always have it branch to another batch file called LOADNET to load the
  1757.     network shell. Use the AUTOEXEC.BAT only to load special TSRs and the
  1758.     IPX. An AUTOEXEC.BAT might look like this:
  1759.     
  1760.      @Echo Off
  1761.      Cls
  1762.      IPX
  1763.      SET NET=NETX.COM
  1764.      SET COMSPEC=O:COMMAND.COM
  1765.      LOADNET
  1766.     
  1767.     The two SET commands are very important. The first sets a variable
  1768.     called NET to NETX.COM. This will be used later in LOADNET.BAT. By using
  1769.     this variable, you can have users running many different versions of DOS
  1770.     and still use the same LOADNET.BAT file. You could also use a command
  1771.     SET NET=LOADHI EMSNETX.EXE to take advantage of advanced memory manager
  1772.     software.
  1773.     
  1774.     Another trick is to run BESTNET from the Network Survival Kit. BestNet
  1775.     will automatically pick the best network shell and set the NET
  1776.     environment variable for you. You would use the command BESTNET instead
  1777.     of SET NET=NETX.COM in the AUTOEXEC.BAT file.
  1778.     
  1779.     The SET COMSPEC=O:COMMAND.COM is important if you are booting off of
  1780.     either a floppy drive or a diskless workstation. This assumes that O:
  1781.     will eventually be mapped to a directory on the network that has a valid
  1782.     COMMAND.COM in it.
  1783.     
  1784.     It is important to set the comspec BEFORE loading your NET shell. This
  1785.     prevents a problem where Netware wants to go back to the boot disk even
  1786.     after you change the comspec. I don't know why this works but it does.
  1787.     Trust Me. If you are going to use COMMAND.COM on drive C:, ignore this
  1788.     paragraph.
  1789.     
  1790.     Now we go to the LOADNET.BAT file.
  1791.     
  1792.  
  1793.     Computer Tyme * MarxMenu * Users Manual                 Page #21
  1794.     -----------------------------------------------------------------
  1795.     
  1796.      @Echo Off
  1797.      %NET%
  1798.      SET NET=
  1799.      F:
  1800.      STARTUP
  1801.     
  1802.     The big concept behind LOADNET is that this file is NEVER CHANGED. You
  1803.     put in on all your workstations and in the LOGIN directory and it is
  1804.     EXACTLY THE SAME for every computer in your network. Any changes to
  1805.     individual computers are made in the AUTOEXEC.BAT file.
  1806.     
  1807.     So why is this important. Because if you are running diskless
  1808.     workstations what happens is that while you are booting you have a
  1809.     mythical drive A:. As soon as your NET shell loads this drive
  1810.     dissappears out from under you and you end up in F:\LOGIN. If you are
  1811.     running LOADNET.BAT when this happens you drop out of A:LOADNET.BAT and
  1812.     land in the middle of F:\LOADNET.BAT. And if your LOADNET.BAT is exactly
  1813.     the same file as the LOADNET.BAT in the \LOGIN directory, you take off
  1814.     running like the transition never occured.
  1815.     
  1816.     Even if you are not running on diskless workstations now, you might go
  1817.     to it someday. It also creates good programming habits and helps you
  1818.     boot up cleanly.
  1819.     
  1820.     Lets see what LOADNET does. The first line is @ECHO OFF, that's easy.
  1821.     The second line %NET% executes the network shell that you specified with
  1822.     the SET NET=NETX command. This actually loads the network shell. The
  1823.     third line clears the NET variable freeing up space for other
  1824.     environment variables. F: switches you to drive F if you aren't there
  1825.     already. And finally STARTUP is the name of yet another batch file you
  1826.     jump to.
  1827.     
  1828.     The STARTUP.BAT file controls what happens AFTER LOADNET runs. This file
  1829.     can be freely changed so that LOADNET.BAT can stay the same. This lets
  1830.     you modify what happens AFTER the network shell is loaded.
  1831.     
  1832.     If you are using Novell's login program STARTUP.BAT might look like
  1833.     this:
  1834.     
  1835.      @Echo Off
  1836.      LOGIN
  1837.     
  1838.     
  1839.      THE SHELL.CFG FILE     THE SHELL.CFG FILE     THE SHELL.CFG FILE
  1840.     
  1841.     The SHELL.CFG file is used by Netware to configure the Netware shell.
  1842.     You should read the manuals on this to see if you need any of the many
  1843.     options available. I suggest you at least have the following commands in
  1844.     your SHELL.CFG file.
  1845.     
  1846.  
  1847.     Computer Tyme * MarxMenu * Users Manual                 Page #22
  1848.     -----------------------------------------------------------------
  1849.     
  1850.      cache buffers=4
  1851.      show dots=on
  1852.     
  1853.     The master network gurus tell me that cache buffers are just a waste of
  1854.     memory and do not provide any better performance. Every 2 cache buffers
  1855.     not used saves you 1k of memory. Show dots makes your network compatible
  1856.     with more software utilities and should be set on unless you have some
  1857.     other reason not to.
  1858.     
  1859.     
  1860.      USING A MENU FILE TO LOG IN     USING A MENU FILE TO LOG IN     USING A MENU FILE TO LOG IN
  1861.     
  1862.     If you are going to use MarxMenu to log in instead of Novell's
  1863.     utilities, you will want to print out the sample file LOGIN.MNU on your
  1864.     MarxMenu disk and study it. Your STARTUP.BAT file might look like this:
  1865.     
  1866.      @Echo Off
  1867.      SET BOOTUP=LOGIN
  1868.      MarxMenu Login
  1869.      %BOOTUP%
  1870.     
  1871.     If MarxMenu works correctly, it will change the environment variable
  1872.     %BOOTUP% to point to a file that it creates. If for some reason it fails
  1873.     (you make a mistake in the login), it will execute Novell's login and
  1874.     let you get in and fix it.
  1875.     
  1876.     You will have to modify the LOGIN.MNU for your system. The one that I
  1877.     supply will not work on your system. It is to be used as a sample only
  1878.     and provide ideas for your login menu.
  1879.     
  1880.     One word of caution. After modifying this menu, always run MARXCOMP
  1881.     LOGIN to compile it. Otherwise, if you boot up into it you won't have
  1882.     enough access rights to recompile automatically.
  1883.     
  1884.     
  1885.      NOVELL SEARCH DRIVES     NOVELL SEARCH DRIVES     NOVELL SEARCH DRIVES
  1886.     
  1887.     MarxMenu and Network Survival Kit files need to be in the search path.
  1888.     You can copy the files into a directory that is already in the search
  1889.     path or create a new directory and add it to the search path. Here is a
  1890.     suggested setup.
  1891.     
  1892.      ---+--- SYSTEM
  1893.         |
  1894.         +--- MAIL
  1895.         |
  1896.         +--- LOGIN
  1897.         |
  1898.         +--- HOME -----+--- FRED
  1899.         |              |
  1900.         |              +--- BARNEY
  1901.         |
  1902.         +--- PUBLIC ---+--- DOS
  1903.                        |
  1904.                        +--- UTIL
  1905.                        |
  1906.                        +--- NSK
  1907.     
  1908.  
  1909.     Computer Tyme * MarxMenu * Users Manual                 Page #23
  1910.     -----------------------------------------------------------------
  1911.     
  1912.     I would use MAP ROOT and set up the following mapped drives:
  1913.     
  1914.       MAP ROOT H: = \HOME\BARNEY
  1915.       MAP ROOT U: = \PUBLIC\UTIL
  1916.       MAP ROOT N: = \PUBLIC\NSK    ;Network Survival Kit
  1917.       MAP ROOT O: = \PUBLIC\DOS
  1918.       MAP ROOT P: = \PUBLIC
  1919.     
  1920.       Set PATH=H:\;U:\;N:\;O:\;P:\;
  1921.     
  1922.     The idea here is that the users home directory is searched first. Then
  1923.     the util directory where various network goodies and batch files are
  1924.     kept. Then the NSK directory where only NSK and menu files are. Then the
  1925.     DOS directory where only your original DOS files are. And finally PUBLIC
  1926.     which contains only Novell utilities.
  1927.     
  1928.     Traditionally, with Novell networks, searches have been set up using the
  1929.     current directories of paths such as:
  1930.     
  1931.       Set PATH=H:.;U:.;N:.;O:.;P:.;
  1932.     
  1933.     I have found that since the addition of the MAP ROOT enhancement that
  1934.     this traditional method is not as flexible.
  1935.     
  1936.     
  1937.      SETTING FILE ATTRIBUTES     SETTING FILE ATTRIBUTES     SETTING FILE ATTRIBUTES
  1938.     
  1939.     Historically Novell has recommended setting file attributes to Shareable
  1940.     and Read Only. This was to deal with DOS 3.0 and earlier and network
  1941.     dumb programs. This is now an obsolete process and if you are in the
  1942.     habit of doing this it's time to quit (Unless you are still running DOS
  1943.     version 2 on your workstations).
  1944.     
  1945.     I personally flag all my network files Normal as a way of catching
  1946.     network dumb programs.
  1947.     
  1948.     MarxMenu is a network smart product. It therefore isn't recommended that
  1949.     any file flagging be done on Computer Tyme software.
  1950.     
  1951.     
  1952.      NOVELL SEMAPHORES     NOVELL SEMAPHORES     NOVELL SEMAPHORES
  1953.     
  1954.     For a detailed explanation of Novell Semaphores, read the Novell
  1955.     manuals. What I've done is to export these functions to MarxMenu. I have
  1956.     implemented them slightly different than Novell did and have hidden all
  1957.     the nasties from you such as semaphore handles. All semaphores are
  1958.     accessed by name only.
  1959.     
  1960.     Here's a brief overview of semaphores. Semaphores are names of shared
  1961.     resources that the server keeps track of. Semaphores have three
  1962.     properties. They have a name, value and number of users. The name can be
  1963.     anything up to 48 characters long. The value is a number from -128 to
  1964.     127. If the value is less than 0, the resource the semaphore represents
  1965.     is considered used up.
  1966.     
  1967.  
  1968.     Computer Tyme * MarxMenu * Users Manual                 Page #24
  1969.     -----------------------------------------------------------------
  1970.     
  1971.     By opening a semaphore, you increase the number of users by one. By
  1972.     closing it, you decrease the number by one. If a single user opens a
  1973.     semaphore many times, it is only counted as one. When you log out, your
  1974.     semaphores are closed. This is also true if you turn your computer off,
  1975.     but it takes 15 minutes for the server to give up on you.
  1976.     
  1977.     The first user to open a semaphore creates it. The last user to close a
  1978.     semaphore deletes it. When a semaphore is created, a value can be
  1979.     assigned. If a semaphore is opened that already exists, the initial
  1980.     value is ignored.
  1981.     
  1982.     When NovWaitOnSemaphore is called by any user, the value is decremented.
  1983.     If the value is not below zero, NovWaitOnSemaphore returns true.
  1984.     Otherwise it returns false and the value is unchanged. The amount of
  1985.     time that NovWaitOnSemaphore will wait is controlled by the variable
  1986.     NovSemaphoreTimeOut.
  1987.     
  1988.     When NovSignalSemaphore is called by any user, the value is incremented.
  1989.     This allows other users to call NovWaitOnSemaphore and get a True value.
  1990.     
  1991.     NovSemaphoreUsers and NovSemaphoreValue are used to read the status of a
  1992.     semaphore without changing it's value.
  1993.     
  1994.     One of the major differences between how MarxMenu uses semaphores and
  1995.     the way Novell uses them is that normally a semaphore dies when the
  1996.     application finishes. This would normally prevent a 0k menu system from
  1997.     being able to use them. MarxMenu uses an interesting trick where it
  1998.     fools Netware into thinking that the semaphore belongs to another task.
  1999.     This allows the semaphore to live.
  2000.     
  2001.     Semaphores can be tracked using FCONSOLE. Some versions of Netware have
  2002.     a bug in FCONSOLE that reports an open count that is 256 times the real
  2003.     count. Just divide by 256 for the right number.
  2004.     
  2005.     Semaphores can be used for software metering. This allows MarxMenu to be
  2006.     aware of what other users on the network are doing. Here are the basic
  2007.     tools, what you do with them is only limited by your imagination.
  2008.     
  2009.     
  2010.      NETWARE MHS & MARXMENU     NETWARE MHS & MARXMENU     NETWARE MHS & MARXMENU
  2011.     
  2012.     MarxMenu has the ability to interface to NetWare MHS which allows
  2013.     MarxMenu to send and receive messages. You need to have a copy of
  2014.     NetWare MHS to use this feature which can be purchased from your
  2015.     friendly neighborhood NetWare dealer.
  2016.     
  2017.     MHS stands for Message Handling System and the way it works is that you
  2018.     have a dedicated mail transport computer on the network. This computer
  2019.     is like a mailman and it goes around and looks for outgoing mail every
  2020.     so often. If it finds mail it reads the address and delivers it.
  2021.     
  2022.  
  2023.     Computer Tyme * MarxMenu * Users Manual                 Page #25
  2024.     -----------------------------------------------------------------
  2025.     
  2026.     Any application program, such as MarxMenu, need only leave a text file
  2027.     in a special outgoing directory and put an address header on the file.
  2028.     Here's an example of how this is done:
  2029.     
  2030.      Example:
  2031.        var Message
  2032.     
  2033.        {MHS Header}
  2034.     
  2035.        AppendArray(Message,'SMF-70')
  2036.        AppendArray(Message,'FROM:MARC @ CTYME')
  2037.        AppendArray(Message,'TO:VICKI @ CTYME')
  2038.        AppendArray(Message,'SUBJECT:The Princess Called!')
  2039.     
  2040.        {Blank line separates header from message}
  2041.     
  2042.        AppendArray(Message,'')
  2043.     
  2044.        AppendArray(Message,'The Princess needs a ride home from dance')
  2045.        AppendArray(Message,'class and wants to get some money to go')
  2046.        AppendArray(Message,'skating. She wants to know if you can pick')
  2047.        AppendArray(Message,'them up at midnight and if 5 little girls')
  2048.        AppendArray(Message,'can stay over night.')
  2049.     
  2050.        WriteTextFile(MhsSendDirectory + '\' + UniqueFileName,Message)
  2051.     
  2052.     When MarxMenu creates a file in this format, MHS will pick up the file
  2053.     and deliver it. When it's delivered it will be like any other message
  2054.     and will appear in your favorite MHS Mail system. You can also use this
  2055.     feature to notify you when your fax server receives a fax.
  2056.     
  2057.     To receive a message, see the example under MhsReadFile. All MHS
  2058.     commands start with Mhs. By using these MHS features, MarxMenu can be
  2059.     used as a network job server that is triggered by messages sent to it
  2060.     and reports it's results by sending messages.
  2061.     
  2062.     
  2063.      RUNNING A MARXMENU     RUNNING A MARXMENU     RUNNING A MARXMENU
  2064.     
  2065.     MarxMenus are run by typing MARX and the name of a menu file such as
  2066.     QUICK.MNU. As discussed earlier, the menu file is a text file created
  2067.     with a text editor such as MarxEdit (ME.EXE).
  2068.     
  2069.      Usage: MARX <Menu Filename>
  2070.     
  2071.      Example:
  2072.         MARX QUICK
  2073.     
  2074.     In the above example, if SAMPLE.MRX doesn't exist, or is older than
  2075.     SAMPLE.MNU then MarxMenu will automatically load the complier,
  2076.     MARXCOMP.EXE to create a new SAMPLE.MRX file.
  2077.     
  2078.  
  2079.     Computer Tyme * MarxMenu * Users Manual                 Page #26
  2080.     -----------------------------------------------------------------
  2081.     
  2082.     In the never ending quest for more speed, MarxMenu is somewhat faster to
  2083.     load if you include the MRX extension.
  2084.     
  2085.      Example:
  2086.         MARX QUICK.MRX
  2087.     
  2088.     By specifying the MRX extension, no test is made to compare the file
  2089.     date with the source file. Thus if you have changed the MNU file, you
  2090.     will still be running the old version. In order to force a recompile,
  2091.     type MARXCOMP QUICK.
  2092.     
  2093.     
  2094.      UPGRADING MARXMENU     UPGRADING MARXMENU     UPGRADING MARXMENU
  2095.     
  2096.     When installing an upgraded version of MarxMenu be sure to copy the
  2097.     MARXMENU.EXE, MARXMENU.OVR and MARXCOMP.EXE files into your MarxMenu
  2098.     directory. A very common mistake is not copying the MARXMENU.OVR file.
  2099.     If you forget this file MarxMenu will lock up when you try to run it.
  2100.     If you are on a network and anyone on the network is using the menu you
  2101.     won't be able to copy over MARXMENU.OVR. You will have to wait to after
  2102.     hours or chase everyone off the network to install the upgrade.
  2103.     
  2104.     A common mistake occurs when you copy the MarxMenu file into a working
  2105.     directory and someone else has the MARXMENU.OVR file open and you fail
  2106.     to notice that it failed to copy. If MarxMenu starts locking up after an
  2107.     upgrade this is probably why. Make sure the file dates on MARXMENU.EXE
  2108.     and MARXMENU.OVR are the same.
  2109.     
  2110.     After installing the new MarxMenu, all your menu files will have to be
  2111.     recompiled. This should happen automatically, but if you are on a
  2112.     network and the users don't have enough access rights the compile will
  2113.     fail. You can recompile all your network menus as follows:
  2114.     
  2115.      WHEREIS *.MNU|DOLIST MARXCOMP @L
  2116.     
  2117.     If you are using MarxMenu to log into the network then be sure to copy
  2118.     the new MarxMenu files into your LOGIN directory and recompile your
  2119.     LOGIN menu.
  2120.     
  2121.     If you install MarxMenu in one directory and then move it to another you
  2122.     will have to run MARXMENU INST to recreate the batch files for that
  2123.     directory. Make sure that the MarxMenu files are on your PATH.
  2124.     
  2125.     Any time you upgrade MarxMenu should work as well or better that the
  2126.     previous version. Occasionally I make a mistak so you might want to
  2127.     copy your present NSK directory to another temporary directory until the
  2128.     upgrade is complete and tested. This gives you the ability to go back to
  2129.     the old one should the need arise. This procedure should be followed on
  2130.     software upgrades from other vendors as well.
  2131.     
  2132.  
  2133.     Computer Tyme * MarxMenu * Users Manual                 Page #27
  2134.     -----------------------------------------------------------------
  2135.     
  2136.      CUSTOMIZING MARXMENU SAMPLE FILES     CUSTOMIZING MARXMENU SAMPLE FILES     CUSTOMIZING MARXMENU SAMPLE FILES
  2137.     
  2138.     Included in the MarxMenu package are menu files which you can easily
  2139.     modify to execute your programs and perform other functions you desire.
  2140.     Using MarxEdit, the text editor included in this package, you can modify
  2141.     and customize these menu files.
  2142.     
  2143.     Also included to demonstrate the power and versatility of the menu
  2144.     system is a game menu NIM.MNU. This is a game written in the menu system
  2145.     that demonstrates some of the logic functions and programmability of the
  2146.     system.
  2147.     
  2148.      Here's a simple example of a menu file:
  2149.      ===================================
  2150.      ClearScreen
  2151.      DrawBox 30 9 25 8
  2152.      Writeln ' 1) Lotus'
  2153.      Writeln ' 2) dBase'
  2154.      Writeln ' 3) Wordstar'
  2155.      Writeln
  2156.      Write 'Select: '
  2157.     
  2158.      OnKey '1'
  2159.         cd\lotus
  2160.         123
  2161.     
  2162.      OnKey '2'
  2163.         cd\db3
  2164.         db3
  2165.     
  2166.      OnKey '3'
  2167.         cd\wordstar
  2168.         ws
  2169.     
  2170.      ====================================
  2171.     
  2172.     Notice in looking at the "OnKey" statements that all you have to do is
  2173.     tell MarxMenu how to get to the program. Although, MarxMenu takes care
  2174.     of reloading itself after exiting a selected program, its does not
  2175.     return to its own subdirectory as many other menu programs do.
  2176.     
  2177.     That means that if you execute a program in another subdirectory, when
  2178.     you come back to the menu, you remain in that subdirectory. If you
  2179.     normally run your applications with a batch file, consider having
  2180.     MarxMenu change directories and execute the program for you. This will
  2181.     eliminate debugging problems caused by the actions of your batch files.
  2182.     
  2183.  
  2184.     Computer Tyme * MarxMenu * Users Manual                 Page #28
  2185.     -----------------------------------------------------------------
  2186.     
  2187.      MENU ANALYSIS     MENU ANALYSIS     MENU ANALYSIS
  2188.     
  2189.     Let's start a simple analysis of the example menu file shown
  2190.     above. The ClearScreen statement simply clears the screen to
  2191.     give us a fresh workspace for the menu. DrawBox is the command to
  2192.     draw a box on the screen to contain some menu text. The Writeln
  2193.     command writes a line of text to the screen within the box, then
  2194.     positions the cursor on the next line. The menu text shows the
  2195.     available selection keys that the user has access to.
  2196.     
  2197.     
  2198.      ONKEY STATEMENTS     ONKEY STATEMENTS     ONKEY STATEMENTS
  2199.     
  2200.     The OnKey statements control what is actually executed. OnKey
  2201.     statements also allow you to execute hidden commands when you do
  2202.     not want them to appear on the menu screen. One trick I use is to
  2203.     have an OnKey statement define a key that runs MarxEdit on my
  2204.     personal menu file. I don't show this key on the menu to keep
  2205.     others from poking around in the file. For additional security
  2206.     a password can also be set up on this key.
  2207.     
  2208.     Normally you enter a line of text as if you were creating a BAT
  2209.     file to run your application. Like batch files, if one of your
  2210.     commands is a batch file, all the statements after it will not
  2211.     execute. To prevent this you can use the CALL command to call a
  2212.     batch file in DOS 3.3 or later, or COMMAND /C in DOS 3.1 and 3.2.
  2213.     
  2214.     Normally, text displayed under an OnKey statement is the same
  2215.     text as the batch file created by MarxMenu. There are some
  2216.     exceptions. If a line starts with a "|" (vertical bar), the line
  2217.     will be interpreted by MarxMenu instead of being written to a
  2218.     batch file. This allows commands such as "PASSWORD" to be used.
  2219.     String variables can be passed as part of a batch command if the
  2220.     name of the string variable starts with a "%" symbol.
  2221.     
  2222.     The spaces preceding the commands under the OnKey statement are
  2223.     for clarity only. They are not necessary for MarxMenu to function
  2224.     properly.
  2225.     
  2226.     
  2227.      POPUP MENUS     POPUP MENUS     POPUP MENUS
  2228.     
  2229.     If you want to create a popup menu within a menu you can do so by
  2230.     using a "label". A label is a keyword preceded by a colon. To
  2231.     call the popup menu, place the keyword on a line by itself
  2232.     preceded by a carat (Shift 6). The label will precede the popup
  2233.     menu definition.
  2234.     
  2235.     For example if you have a popup menu to load Smart Software, you could
  2236.     name the PopUpMenu Smart. To bring up the Smart PopUpMenu, define a key
  2237.     in your main menu for Smart like this:
  2238.     
  2239.  
  2240.     Computer Tyme * MarxMenu * Users Manual                 Page #29
  2241.     -----------------------------------------------------------------
  2242.     
  2243.      OnKey 'S'
  2244.         ^Smart
  2245.     
  2246.     The Smart menu itself might look something like this:
  2247.     
  2248.      :Smart
  2249.      BoxHeaderColor ForeColor BackColor
  2250.      BoxBorderColor Yellow Green
  2251.      BoxInsideColor LCyan Green
  2252.      InverseColor Yellow Red
  2253.      BoxHeader = ' Smart Menu '
  2254.      DrawBox 45 16 20 6
  2255.      UseArrows 2 2 16 3
  2256.      ClearLine 205
  2257.      Writeln
  2258.      Writeln '  Data Base'
  2259.      Writeln '  Spread Sheet'
  2260.      Write   '  Word Processor'
  2261.     
  2262.      OnKey 'D'
  2263.        SM D
  2264.     
  2265.      OnKey 'S'
  2266.        |BoxHeaderColor ForeColor BackColor
  2267.        |BoxBorderColor Yellow Green
  2268.        |BoxInsideColor White Green
  2269.        |%1 = PickFile('C:\SMART\SPREAD\*.WS',4,5,17)
  2270.        SM S -ALOAD %1
  2271.     
  2272.      OnKey 'W'
  2273.        |BoxHeaderColor ForeColor BackColor
  2274.        |BoxBorderColor Yellow Green
  2275.        |BoxInsideColor White Green
  2276.        |%1 = PickFile('C:\SMART\WORD\*.DOC',4,5,17)
  2277.        SM W -ALOAD %1
  2278.     
  2279.     While developing the menu, program one of the keys to run your favorite
  2280.     editor on the menu file that you are creating. This way, as soon as the
  2281.     change is made, the results will show when you exit your editor. Since
  2282.     MarxMenu allows versatility in creating the look of your menus, a little
  2283.     trial and error will be required to make things look right.
  2284.     
  2285.     
  2286.      USING QUICK.MNU AND QUICKNOV.MNU     USING QUICK.MNU AND QUICKNOV.MNU     USING QUICK.MNU AND QUICKNOV.MNU
  2287.     
  2288.     Two other sample menus that are easy to configure are QUICK and
  2289.     QUICKNOV. The QUICKNOV menu is for Novell Networks. These menus have a
  2290.     lot of features already defined for you and are very easy to configure.
  2291.     The provide self sizing windows and require less programming than the
  2292.     SAMPLE.MNU. Here's how QUICK.MNU works:
  2293.     
  2294.  
  2295.     Computer Tyme * MarxMenu * Users Manual                 Page #30
  2296.     -----------------------------------------------------------------
  2297.     
  2298.      QUICK.MNU
  2299.     
  2300.        AddChoice('Directory Master',1)
  2301.        AddChoice('Pick Directory',2)
  2302.        AddChoice('Memory Map',3)
  2303.        AddChoice('Free Space',4)
  2304.     
  2305.        CornerStretchBox ('DOS Menu',38,15)
  2306.     
  2307.        OnKey Task(1)
  2308.           DM
  2309.     
  2310.        OnKey Task(2)
  2311.           PD
  2312.     
  2313.        OnKey Task(3)
  2314.           RamMap
  2315.           Pause
  2316.     
  2317.        OnKey Task(4)
  2318.           Free
  2319.           Pause
  2320.     
  2321.     In this example, the AddChoice commands are used to display to the user
  2322.     the choices available. The numbers match the OnKey Task(n) statements so
  2323.     that Tasks are associated with choices. The CornerStretchBox creates a
  2324.     sef sizing box where they upper left corner position is specified.
  2325.     
  2326.     You won't find the commands AddChoice, CornerStretchBox, or Task in the
  2327.     manual. That's because they are Procedures defined in Include files. The
  2328.     QUICK and QUICKNOV menus include CUSTOM.INC which allows you to set up
  2329.     various features of the menus. CUSTOM.INC can include either NOVELL.INC,
  2330.     BLOCK.INC, or GRID.INC which change the look and feel of the menus. You
  2331.     might want to experiment with these to see which one you like the best.
  2332.     You'll have to go into these three include files if you want to change
  2333.     the colors.
  2334.     
  2335.     When you modify include files, MarxMenu doesn't automatically recompile
  2336.     the menu the same way it does when you modify the menu file. You need to
  2337.     force a recompile by typing MARXCOMP QUICK or you can delete the MRX
  2338.     file to force a recompile.
  2339.     
  2340.     The best way to start is to copy the QUICK or QUICKNOV files to a
  2341.     different name and then modify them to run your programs. Don't modify
  2342.     the originals because if you get a MarxMenu upgrade, the upgrade will
  2343.     write over the original files.
  2344.     
  2345.  
  2346.     Computer Tyme * MarxMenu * Users Manual                 Page #31
  2347.     -----------------------------------------------------------------
  2348.     
  2349.      THE CONSOLE     THE CONSOLE     THE CONSOLE
  2350.     
  2351.             +---| Console Functions |---+
  2352.             | 1 - Blank Screen          |
  2353.             | 2 - Set Blank Message     |
  2354.             | 3 - Lock Keyboard         |
  2355.             | 4 - Set Blank Time        |
  2356.             +---------------------------+
  2357.     
  2358.     The Console is a popup menu of built-in functions. To activate the
  2359.     console, press the TAB key. A menu will pop-up in the upper left hand
  2360.     corner of the screen. You can change the position of this popup menu
  2361.     with the ConsolePos function.
  2362.     
  2363.     The first command on the Console screen is Blank Screen. Enter 1 and the
  2364.     screen will blank immediately. It will remain blanked until a key is
  2365.     pressed. Enter 2 on the Console menu and you can change the message
  2366.     displayed on the Blank Screen display.
  2367.     
  2368.     Enter 3 and you will be prompted for a word to lock the keyboard. After
  2369.     you enter the lock word the screen will blank and the keyboard will be
  2370.     locked until the exact lock word is typed. Enter 4 to set the number of
  2371.     minutes to wait before blanking the screen.
  2372.     
  2373.     The lock word feature is handy for times when you must leave the
  2374.     keyboard but don't want menu commands displayed for all to see. It also
  2375.     effectively locks the keyboard so someone can't escape to DOS and test
  2376.     the format command on your hard disk. We run this menu on a Novell
  2377.     Network and don't want to let everyone have access to the Supervisors'
  2378.     power at the touch of the escape key should we leave the keyboard.
  2379.     
  2380.     
  2381.      REPOSITIONING THE TOP WINDOW     REPOSITIONING THE TOP WINDOW     REPOSITIONING THE TOP WINDOW
  2382.     
  2383.     One nice feature you can use to get the windows right is to turn on the
  2384.     scroll lock. This lets you move the top window around the screen using
  2385.     the arrow keys so you can see how it looks. Then you can go into your
  2386.     menu code and set it permanently.
  2387.     
  2388.     Set Scroll Lock to "on". On most keyboards, a scroll lock LED will light
  2389.     up. Now use the arrow keys to move the top window to any position on the
  2390.     screen. Neat Huh?
  2391.     
  2392.     If you want to prevent users from moving the menus around using this
  2393.     feature, add the command, "ScrollMove Off" to your menu.
  2394.     
  2395.  
  2396.     Computer Tyme * MarxMenu * Users Manual                 Page #32
  2397.     -----------------------------------------------------------------
  2398.     
  2399.      MOUSE SUPPORT     MOUSE SUPPORT     MOUSE SUPPORT
  2400.     
  2401.     If you have a standard mouse driver, MarxMenu will detect it and use it
  2402.     automatically. The left button on the mouse is the same as pressing
  2403.     return. The right button on the mouse is the same as pressing escape.
  2404.     Pressing both buttons on the mouse is the same as pressing the tab key.
  2405.     As of now, I'm not yet using the center button on the mouse for
  2406.     anything.
  2407.     
  2408.     The sensitivity of the mouse can be controlled using the MouseHorizontal
  2409.     and MouseVertical commands or bY setting environment variables MOUSEX
  2410.     and MOUSEY.
  2411.     
  2412.     
  2413.      STARTING OFF THE EASY WAY     STARTING OFF THE EASY WAY     STARTING OFF THE EASY WAY
  2414.     
  2415.     For those of you who want to just get a menu going and don't want
  2416.     anything complicated we have included a menu called the LEVEL1 menu.
  2417.     This menu is a fill in the blank type of menu that will get you going
  2418.     quickly and easilly.
  2419.     
  2420.     This menu requires no programming and explains itself. You run it by
  2421.     typing the command:
  2422.     
  2423.      MARX LEVEL1
  2424.     
  2425.     The first thing it does is scan your drive to find the directories. Then
  2426.     you just answer the questions and fill in the menu. This isn't as
  2427.     powerful as programming your own menu, but if you want something quick
  2428.     and dirty, this may be the answer for you.
  2429.     
  2430.     Although the LEVEL1 menu example will work on networks, it is mostly
  2431.     intended for single user use.
  2432.     
  2433.     
  2434.      ABOUT VARIABLES     ABOUT VARIABLES     ABOUT VARIABLES
  2435.     
  2436.     One of the most unusual things about MarxMenu is its variables. MarxMenu
  2437.     handles variables differently than any other programming language. For
  2438.     the experienced programmer, this may require some adjustment since it's
  2439.     like getting used to driving a Cadillac after driving a VW Beetle.
  2440.     
  2441.     All variables in MarxMenu are like an empty box that can contain
  2442.     anything. A variable can be a number, boolean, string, file, array, etc.
  2443.     The type of variable is controlled internally and the user need not
  2444.     declare variable types.
  2445.     
  2446.     Variables are created with the VAR command:
  2447.     
  2448.      Var X Y Z
  2449.     
  2450.  
  2451.     Computer Tyme * MarxMenu * Users Manual                 Page #33
  2452.     -----------------------------------------------------------------
  2453.     
  2454.     If the word VAR is on a line by itself, the following lines, up to a
  2455.     blank line, are considered variable names.
  2456.     
  2457.      Var
  2458.        MyAge
  2459.        YourAge
  2460.        HisAge
  2461.        HerAge
  2462.     
  2463.     Variables are initialized to null values; 0 for Numbers, False for
  2464.     Booleans, and '' for strings. Initial values can be set when the
  2465.     variable is created.
  2466.     
  2467.      Var
  2468.        X = 6
  2469.        MyName = 'Marc'
  2470.        Programmer = True
  2471.     
  2472.     Variables can change variable types. If you write a number to a string
  2473.     variable, the variable changes to a number.
  2474.     
  2475.      X = '234'
  2476.      X = Value(X)
  2477.     
  2478.     This is valid in MarxMenu. X now is a number and contains the value 234.
  2479.     
  2480.     When choosing variable names, it is good programming practice to choose
  2481.     long meaningful names. This allows yourself and others to be able to
  2482.     read menus and follow the logic more easily.
  2483.     
  2484.     
  2485.      NUMERIC VARIABLES     NUMERIC VARIABLES     NUMERIC VARIABLES
  2486.     
  2487.     MarxMenu supports two kinds of numbers, 32 bit integers and real
  2488.     (floating point) numbers. Integers are whole numbers in the range of
  2489.     plus or minus 2,147,483,647. This gives you a wide range of numbers but
  2490.     no fractions.
  2491.     
  2492.     With integers the answers to division are always rounded down thus:
  2493.     
  2494.      7 / 3 = 2
  2495.     
  2496.     Numbers beginning with a '$' indicate base 16 or hex numbers.
  2497.     
  2498.      Example: $20 is the same as 32
  2499.     
  2500.  
  2501.     Computer Tyme * MarxMenu * Users Manual                 Page #34
  2502.     -----------------------------------------------------------------
  2503.     
  2504.      BOOLEAN VARIABLES     BOOLEAN VARIABLES     BOOLEAN VARIABLES
  2505.     
  2506.     Boolean variables are True or False. For example:
  2507.     
  2508.      var Adult
  2509.         Adult = True
  2510.         if not Adult then Write 'You must be 21 to enter.'
  2511.     
  2512.     Boolean values can be set by computation:
  2513.      Example:
  2514.         Adult = Age >= 21
  2515.     
  2516.     In this example the result of Age >= 21 is stored in the variable Adult.
  2517.     
  2518.     If you use a boolean variable by itself, MarxMenu assumes you are
  2519.     setting it to on. Thus:
  2520.     
  2521.       ClearScreenOnExit
  2522.     
  2523.     is the same as:
  2524.     
  2525.       ClearScreenOnExit On
  2526.     
  2527.     
  2528.      STRING VARIABLES     STRING VARIABLES     STRING VARIABLES
  2529.     
  2530.     String variables are limited to 255 characters.
  2531.     
  2532.     In MarxMenu, string literals are delimited by either single or double
  2533.     quotes.
  2534.     
  2535.      "This can't be yogurt!"
  2536.      'Lincoln said "Four score and seven years ago ..." '
  2537.     
  2538.     
  2539.      REAL NUMBERS     REAL NUMBERS     REAL NUMBERS
  2540.     
  2541.     So what's the difference between ordinary numbers and real numbers?
  2542.     Ordinary numbers in MarxMenu are 32 bit integers. These are numbers
  2543.     whose range is about plus or minus two billion. Integers are whole
  2544.     numbers and do not include any fractions.
  2545.     
  2546.     This is why MarxMenu has included REAL numbers (also known as Floating
  2547.     Point numbers). Real numbers in MarxMenu use BCD (Binary Coded Decimal)
  2548.     with 18 digits of accuracy. They have a range of 10 to the plus or minus
  2549.     63rd power, which means up to 63 zeros either side of the decimal point.
  2550.     This lets you work with very big and very small numbers.  MarxMenu has
  2551.     smart rounding algorithms so that 1.0 / 3 * 3 = 1.0 and not
  2552.     0.999999999999999999 like in most languages.
  2553.     
  2554.  
  2555.     Computer Tyme * MarxMenu * Users Manual                 Page #35
  2556.     -----------------------------------------------------------------
  2557.     
  2558.     Real numbers are specified by using a decimal point. Thus 5.0 specifies
  2559.     a real number. Most normal MarxMenu functions still require the standard
  2560.     32 bit integers. If you get the error: 'REAL found where INTEGER
  2561.     expected.' You need to use an integer.
  2562.     
  2563.     If an integer is passed where a real is expected, the integer is
  2564.     automatically converted to a real. Thus:
  2565.     
  2566.      6.0 * 3 = 18.0
  2567.     
  2568.     The Value function returns real numbers if a decimal point is used in
  2569.     the string. All the relevant math functions will work with reals as well
  2570.     as comparison operators.
  2571.     
  2572.     MarxMenu supports a variety of functions for real numbers. It has trig
  2573.     functions, log functions, and exponential functions. So why do you need
  2574.     real numbers in a menu program? I don't know. I had a library and
  2575.     threw them in. I figure someone will need them someday.
  2576.     
  2577.     With real numbers you can do trigonometry calculations like those
  2578.     discovered by the ancient Indian chief Pythagoras who discovered what is
  2579.     now known as Pythagoras's triangle.
  2580.     
  2581.     Now I know that a lot of you were taught in Math class that Pythagoras
  2582.     was Greek. Well, it's just not so. Let me tell you the real story:
  2583.     
  2584.     Pythagoras was an Indian chief that had three wives. Two of the wives
  2585.     were twins and weighed 120 pounds each. And they sat next to Pythagoras
  2586.     on a pair of twin deer hides.
  2587.     
  2588.     But Pythagoras also had a third wife who was a large fat woman who sat
  2589.     across from Pythagoras on a hippopotamus hide. This wife weighed 240
  2590.     pounds.
  2591.     
  2592.     What Pythagoras discovered was that the squaw on the hypopotamus was
  2593.     equal to the sum of the squaws on the other two hides!
  2594.     
  2595.     
  2596.      LOCAL VARIABLES     LOCAL VARIABLES     LOCAL VARIABLES
  2597.     
  2598.     MarxMenu also supports local variables. Variables declared within
  2599.     procedures become local variables. Local variables are just like global
  2600.     variables in that you can use them as multidimensional arrays. When the
  2601.     procedure finishes, all local variables are disposed.
  2602.     
  2603.     If a local variable has the same name as a global variable, the local
  2604.     variable will be used.
  2605.     
  2606.  
  2607.     Computer Tyme * MarxMenu * Users Manual                 Page #36
  2608.     -----------------------------------------------------------------
  2609.     
  2610.      DATES     DATES     DATES
  2611.     
  2612.     Dates in MarxMenu are stored as the number of seconds since Junuary 1st
  2613.     1980. This gives MarxMenu a Date range of 68 years. By subtracting two
  2614.     dates, you get the number of seconds between two peroids of time.
  2615.     
  2616.     MarxMenu has several commands that convert text strings to dates. Here
  2617.     are some examples of how MarxMenu sees text dates.
  2618.     
  2619.      Examples:
  2620.        '4-7-91'                 ;04-07-1991 00:00:00
  2621.        'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
  2622.        '12:35:23a'              ;04-07-1991 00:35:23
  2623.        '3:15'                   ;04-07-1991 03:15:00
  2624.     
  2625.     If the string can't be converted, then the variable BadDate is set to
  2626.     true.
  2627.     
  2628.     MarxMenu can also convert dates to strings by using the DateString and
  2629.     TimeString commands.
  2630.     
  2631.     
  2632.      PASSING PARAMETERS TO PROCEDURES     PASSING PARAMETERS TO PROCEDURES     PASSING PARAMETERS TO PROCEDURES
  2633.     
  2634.     Procedures can accept parameters by declaring variable names on the same
  2635.     line as the name of the procedure.
  2636.     
  2637.     Procedures can return variables by using the Return command. Return
  2638.     exits the procedure returning the parameters on the same line as the
  2639.     Return statement.
  2640.     
  2641.      Example:
  2642.     
  2643.      Procedure Factorial (X)
  2644.      var Y Z
  2645.         Y = 1
  2646.         Z = 1
  2647.         while Y <= X
  2648.            Z = Y * Z
  2649.            Y = Y + 1
  2650.         endwhile
  2651.         Writeln X ' factorial is ' Z
  2652.      EndProc
  2653.     
  2654.     In this example, if you were to use Factorial (5) you would get:
  2655.     
  2656.      5 factorial is 120
  2657.     
  2658.      Another Example:
  2659.     
  2660.  
  2661.     Computer Tyme * MarxMenu * Users Manual                 Page #37
  2662.     -----------------------------------------------------------------
  2663.     
  2664.      Procedure AskYesNo (Question)
  2665.      var YesNo
  2666.         DrawBox (34 - (Length(Question) / 2)) 21 Length(Question) + 14 3
  2667.         TextColor LCyan Blue
  2668.         UseArrows Off
  2669.         Write ' ',Question,' (Y/N) '
  2670.         YesNo = UpperCase(ReadKey)
  2671.         YesNo = YesNo = 'Y'
  2672.         if YesNo
  2673.            Write 'Yes'
  2674.         else
  2675.            Write 'No'
  2676.         endif
  2677.         Wait 50
  2678.         EraseTopWindow
  2679.         Return (YesNo)
  2680.      EndProc
  2681.     
  2682.      if AskYesNo 'Do you want to continue? ' then Continue
  2683.     
  2684.     In this example, MarxMenu draws a box and asks a question and waits for
  2685.     a Yes or No answer.
  2686.     
  2687.     Arrays can be passed as parameters. Parameters are passed by value not
  2688.     by reference. This means that any changes to the passed parameter do not
  2689.     affect the original value.
  2690.     
  2691.     You can copy an array by assigning it equal to another array.
  2692.     
  2693.      Example:
  2694.     
  2695.      Array1 = Array2
  2696.     
  2697.     This creates Array1 with a copy of all the elements of Array2. The
  2698.     previous contents of Array1 are overwritten.
  2699.     
  2700.     
  2701.      ABOUT CONSTANTS     ABOUT CONSTANTS     ABOUT CONSTANTS
  2702.     
  2703.     Constants are used to give values meaningful names. By using constants a
  2704.     value can be assigned once and the constant name used throughout the
  2705.     menu program. This way, if you change the value of the constant, all the
  2706.     places where that constant is used automatically change.
  2707.     
  2708.     This is good programming practice.
  2709.     
  2710.      Examples:
  2711.     
  2712.      Const States = 50 CPU = '80386 SX' WeekEnd = True
  2713.     
  2714.  
  2715.     Computer Tyme * MarxMenu * Users Manual                 Page #38
  2716.     -----------------------------------------------------------------
  2717.     
  2718.      or
  2719.     
  2720.      Const
  2721.         States = 50
  2722.         CPU = '80386 SX'
  2723.         WeekEnd = True
  2724.     
  2725.     Using the word STATES is just like using 50. Using CPU is just like
  2726.     using '80386 SX'. But if throughout my menu I use CPU, and then I get a
  2727.     new computer with a 80486, I can just change one line:
  2728.     
  2729.      Const CPU = '80486'
  2730.     
  2731.     And all the places I used CPU changes to '80486'. This is the correct
  2732.     way to program.
  2733.     
  2734.     
  2735.      ABOUT ARRAYS     ABOUT ARRAYS     ABOUT ARRAYS
  2736.     
  2737.     MarxMenu supports multidimensional arrays up to 31 dimensions. Unlike
  2738.     other programming languages, arrays need not be declared. MarxMenu
  2739.     creates arrays "on the fly" and automatically takes care of the array
  2740.     size and number of dimensions.
  2741.     
  2742.     Another unusual feature of MarxMenu arrays is that they are an array of
  2743.     MarxMenu variables. This means that elements of MarxMenu arrays need not
  2744.     be of the same type. Element 1 can be a number, element 2 can be a
  2745.     string and element 3 can be another array.
  2746.     
  2747.     This type of variable management leads to the easy creation of very
  2748.     powerful data structures as you will see.
  2749.     
  2750.      Var X
  2751.     
  2752.      X[1] = 'Element 1'
  2753.      X[2] = 3
  2754.      X[3] = True
  2755.      X[4,6] = 9
  2756.      X[4,7] = 'Ten'
  2757.     
  2758.     These are all valid statements. MarxMenu creates a two dimensional array
  2759.     here. If we now execute the following statement:
  2760.     
  2761.      X[4] = X[4,6] + X[2]
  2762.     
  2763.     X[4] becomes equal to 12 but variables X[4,6] and X[4,7] are lost. This
  2764.     is because we have changed an array into a number. MarxMenu
  2765.     automatically handles the deallocation of memory used by this array and
  2766.     its elements and returns the space the used to the memory pool.
  2767.     
  2768.  
  2769.     Computer Tyme * MarxMenu * Users Manual                 Page #39
  2770.     -----------------------------------------------------------------
  2771.     
  2772.      ABOUT QUALIFIERS     ABOUT QUALIFIERS     ABOUT QUALIFIERS
  2773.     
  2774.     Qualifiers are named indexes into arrays. They are used to make the
  2775.     source menu file more readable and more organized.
  2776.     
  2777.     Suppose we are creating a data structure to deal with places in the
  2778.     United States. First we will need an array for States.
  2779.     
  2780.      Var States
  2781.     
  2782.      We want to store some facts about the states.
  2783.     
  2784.      Qualifier
  2785.         Population
  2786.         Bird
  2787.         Motto
  2788.         County
  2789.     
  2790.      State[3].Population = 10000000
  2791.      State[3].Bird = 'Chicken'
  2792.      State[3].Motto = 'Best politicians money can buy!'
  2793.     
  2794.     Now states have counties and counties have county seats, sheriffs, and
  2795.     cities.
  2796.     
  2797.      Qualifer
  2798.         Sheriff
  2799.         Seat
  2800.         City
  2801.     
  2802.      State[3].County[7].Sheriff = 'Buck InBred'
  2803.      State[3].County[7].Seat = 'Possum Trot'
  2804.     
  2805.     Now counties have cities and cities have schools, mayors, churches, and
  2806.     taxes.
  2807.     
  2808.      Qualifier
  2809.         Schools
  2810.         Mayor
  2811.         Churches
  2812.         Taxes
  2813.     
  2814.      State[3].County[7].City[9].Schools = 8
  2815.      State[3].County[7].City[9].Mayor = 'Virgil Collins'
  2816.      State[3].County[7].City[9].Churches = 120
  2817.      State[3].County[7].City[9].Taxes = '$100,000,000'
  2818.     
  2819.     The above line is the same as:
  2820.     
  2821.  
  2822.     Computer Tyme * MarxMenu * Users Manual                 Page #40
  2823.     -----------------------------------------------------------------
  2824.     
  2825.      State[3,4,7,3,9,4] = '$100,000,000'
  2826.     
  2827.     As you can see with qualifiers, it is easy to create multidimensional
  2828.     arrays in a way that is organized and readable.
  2829.     
  2830.     In this example, the qualifier Population became equal to 1. Bird became
  2831.     equal to 2. The variable references, State[3].Bird and State[3,2] are
  2832.     the same. It's just that one is more readable than the other. Qualifiers
  2833.     normally begin by assigning 1 to the first name and 2 to the second
  2834.     etc. This can be modified.
  2835.     
  2836.      Qualifier
  2837.         Color = 7
  2838.         Size
  2839.         Shape
  2840.     
  2841.     In this case Color becomes the number 7; Size becomes the number 8; and
  2842.     Shape becomes the number 9.
  2843.     
  2844.     
  2845.      POINTER VARIABLES     POINTER VARIABLES     POINTER VARIABLES
  2846.     
  2847.     In MarxMenu variables can point to other variables allowing parameters
  2848.     to be passed to procedures by referrence as well as by value. A pointer
  2849.     variable stores the location of another variable. Any time a pointer
  2850.     variable is accessed, MarxMenu acts upon the variable that the pointer
  2851.     variable is pointing too. Pointer variables are set using the Loc
  2852.     (location) command.
  2853.     
  2854.      Example:
  2855.        Var A B C
  2856.     
  2857.      A = Loc B
  2858.     
  2859.     MarxMenu supports complex location pointers and pointers to other
  2860.     pointers. MarxMenu will resolve all referrences till real data is found.
  2861.     
  2862.      Example:
  2863.      B = Loc A
  2864.      C = Loc B
  2865.      C[5] = 20
  2866.      Writeln A[5]  ;returns 20
  2867.     
  2868.     Pointers can also be passed as parameters to procedures. Thus if A is an
  2869.     array of strings we can sort A as follows:
  2870.     
  2871.      Procedure SortTest (TestArray)
  2872.         SortArray(TestArray)
  2873.      EndProc
  2874.     
  2875.  
  2876.     Computer Tyme * MarxMenu * Users Manual                 Page #41
  2877.     -----------------------------------------------------------------
  2878.     
  2879.      SortTest (Loc A)  ;sorts array A
  2880.     
  2881.     
  2882.      COMMENTS IN MENU FILES     COMMENTS IN MENU FILES     COMMENTS IN MENU FILES
  2883.     
  2884.     MarxMenu has three ways to add comments to a menu file. The first way is
  2885.     with the Comment command.
  2886.     
  2887.      Comment
  2888.      ========================
  2889.      This is a comment block.
  2890.      ========================
  2891.      EndComment
  2892.     
  2893.     All lines up to EndComment are ignored.
  2894.     
  2895.     The second way is with a ';'. All text to the right of the ';'
  2896.     (semicolon) is ignored.
  2897.     
  2898.      BlankTime = 20  ;this is where we set the blank time.
  2899.     
  2900.     The third way is using {} or curly braces. Anything inside the curly
  2901.     braces is ignored. Curly braces can be nested.
  2902.     
  2903.      {All of {this} is a comment.}
  2904.     
  2905.     Comments are ignored by the compiler and cost you nothing in execution
  2906.     speed. Comments can save you a lot of time if you have to come back
  2907.     later and work on your menu, or if someone else has to work on it.
  2908.     Therefore, I encourage you to use comments as much as possible.
  2909.     
  2910.     
  2911.      THE MARXMENU COMPILER     THE MARXMENU COMPILER     THE MARXMENU COMPILER
  2912.     
  2913.     MarxMenu reads your MNU files and creates MRX files. These MRX files are
  2914.     a highly digested form of the MNU file that you created. MRX files are
  2915.     the compiled files.
  2916.     
  2917.     When you run MarxMenu, the interpreter MARXMENU.EXE looks for the menu
  2918.     file with the MRX extension. If it doesn't find it, MARXMENU.EXE will
  2919.     automatically load MARXCOMP.EXE and compile the menu. MARXMENU.EXE also
  2920.     compares the file dates of the MNU and the MRX files. If the MNU file is
  2921.     newer than the MRX file, the compiler will be loaded.
  2922.     
  2923.     MarxMenu will also force a compile if the MRX file was not compiled by
  2924.     the same version and release date of the MarxMenu you are using. MRX
  2925.     files are not compatible from one version of MarxMenu to the next.
  2926.     
  2927.     You can also force a compile from the command line by typing MARXCOMP
  2928.     <menu>. If you are on a network and using MarxMenu to log you in, make
  2929.     sure you run the compiler if you change your login menu file.
  2930.     
  2931.  
  2932.     Computer Tyme * MarxMenu * Users Manual                 Page #42
  2933.     -----------------------------------------------------------------
  2934.     
  2935.     Once your menus are written, you can remove the MNU file and
  2936.     MARXCOMP.EXE from the system. This prevents anyone from modifying your
  2937.     menus. The MRX files are scrambled for security. This prevents probing
  2938.     eyes from reading strings in the MRX files.
  2939.     
  2940.     
  2941.      MARXMENU LANGUAGE RULES     MARXMENU LANGUAGE RULES     MARXMENU LANGUAGE RULES
  2942.     
  2943.     MarxMenu interpretation is left to right and doesn't have any operator
  2944.     precidence. You can control the order of evaluation by using
  2945.     parentheses.
  2946.     
  2947.      Examples:
  2948.     
  2949.        2 + 3 * 4      ;returns 20
  2950.        2 + (3 * 4)    ;returns 14
  2951.     
  2952.        if A > 4 or B < 6 then ...      ;error
  2953.        if (A > 4) or (B < 6) then ...  ;correct
  2954.     
  2955.     Statements are limited to one line and lines are limited to 200
  2956.     characters.
  2957.     
  2958.     
  2959.      COMPILER COMPATIBILITY     COMPILER COMPATIBILITY     COMPILER COMPATIBILITY
  2960.     
  2961.     The MarxMenu compiler is fully compatible with earlier versions of
  2962.     MarxMenu with a few exceptions. The new compiler does a lot more error
  2963.     checking than earlier versions of MarxMenu and will catch errors that
  2964.     you used to get away with. Other than that, the only difference you
  2965.     should notice will be a speed increase.
  2966.     
  2967.     Earlier versions of MarxMenu had separate names for variable types. The
  2968.     names $VAR, BVAR, #VAR, and FILEVAR act the same as typing VAR.
  2969.     
  2970.     Very early versions of MarxMenu had a different form of the USEARROWS
  2971.     command that required 4 to 5 numbers after it. If you run into this
  2972.     error, just get rid of the numbers after USEARROWS and it will work
  2973.     fine.
  2974.     
  2975.     
  2976.      A WORD ABOUT DOS VERSIONS .....     A WORD ABOUT DOS VERSIONS .....     A WORD ABOUT DOS VERSIONS .....
  2977.     
  2978.     Versions of DOS below 3.3 will cause MarxMenu to use 3.5k of ram where
  2979.     3.3 DOS and above use no memory. 3.2 DOS is very buggy and should be
  2980.     replaced. 3.1 DOS isn't too bad for bugs but if you're using the BACKUP
  2981.     and RESTORE programs that came with it, you're in trouble. They don't
  2982.     work on large files. You'll find that out if you try to restore one of
  2983.     them.
  2984.     
  2985.     MS-DOS 4.01 seems to be pretty clean provided you have the April-89
  2986.     release or later. To determine if you do, check the file date on
  2987.     COMMAND.COM. Earlier versions of DOS 4.01 have SERIOUS BUGS. If you are
  2988.     running any DOS 4 earlier than April-89 you should upgrade immediately.
  2989.     
  2990.  
  2991.     Computer Tyme * MarxMenu * Users Manual                 Page #43
  2992.     -----------------------------------------------------------------
  2993.     
  2994.     We are happy to announce that MarxMenu runs under DOS 5.0 with no
  2995.     problems and requiring no modifications. One feature implemented is the
  2996.     Idle Loop call which allows MarxMenu to conserve CPU power when it's not
  2997.     doing anything. This makes it work better under DesqView and Windows.
  2998.     
  2999.     Speaking of Windows, MarxMenu is not a Windows program. It can however
  3000.     be used to start Windows programs and is can be run under Windows.
  3001.     Windows however is an extremely unstable environment. If for some reason
  3002.     you're having trouble with MarxMenu and Windows, it's Windows fault. In
  3003.     spite of glowing reviews that magazine writers seem compelled to write,
  3004.     I reccommend avoiding Windows unless you have a program that requires
  3005.     Windows to run.
  3006.     
  3007.     DR-DOS or EZ-DOS are pretty good also. It is very compatible as long as
  3008.     you don't get too strange with it. I recommend version 3.4 or later.
  3009.     DR-DOS has a nasty COMSPEC bug in versions 5 and 6 when running a second
  3010.     COMMAND.COM shell started from a network drive.
  3011.     
  3012.     4DOS is also pretty good but sometimes some of the advanced features in
  3013.     this product can cause it to behave differently than DOS. This requires
  3014.     extra care when writing your menus.
  3015.     
  3016.     MarxMenu should work correctly on 386 type multiuser operating systems
  3017.     such as Digital Research's Concurrent DOS 386 or SCO VPIX DOS emulators
  3018.     and PCMOS. Under these systems you will have to set the TASK environment
  3019.     variable if you are running MarxMenu in multiple tasks.
  3020.     
  3021.     MarxMenu will not run correctly under DesqView 2.26. It will run under
  3022.     2.25 or 3.21. So if you are running 2.26, it needs to be upgraded.
  3023.     MarxMenu contains several support functions for DesqView including
  3024.     DesqView API calls to control the DesqView environment.
  3025.     
  3026.     Although I haven't tested MarxMenu in the OS/2 1.3 compatibility box, I
  3027.     have had good success with MarxMenu under OS/2 2.0. I have been able not
  3028.     only to run DOS programs but OS/2 programs as well. If set up right
  3029.     MarxMenu can spawn multiple tasks of both DOS and OS/2 applications.
  3030.     
  3031.     If you are running under some weird DOS and are having problems, try it
  3032.     under "regular" DOS and see if it goes away. If it does, try to find out
  3033.     what it is about your weird DOS that makes it not work right. I am
  3034.     interested in being compatible with as many systems as I can. Let me
  3035.     know if you are having problems. But also, try to get your weird DOS
  3036.     vendors to clean up their act.
  3037.     
  3038.  
  3039.     Computer Tyme * MarxMenu * Users Manual                 Page #44
  3040.     -----------------------------------------------------------------
  3041.     
  3042.      A WORD ABOUT BUGS .....     A WORD ABOUT BUGS .....     A WORD ABOUT BUGS .....
  3043.     
  3044.     Although I try to create perfect bug free software, every now and then
  3045.     even I make a mistak. If you find one, let me know and I'll fix it. My
  3046.     standard is to not only have all the functions of MarxMenu work
  3047.     correctly, but to be as intuitive and full featured as possible.
  3048.     
  3049.     
  3050.      TIPS FROM THE MASTER     TIPS FROM THE MASTER     TIPS FROM THE MASTER
  3051.     
  3052.     Since MarxMenu is a programming language, I want to talk about what
  3053.     programming is and how it is accomplished. I want to dispel some myths
  3054.     and fears relating to it and introduce you to techniques that will help
  3055.     you write code neatly, quickly, and efficiently. From the outside,
  3056.     programming looks like magic; but once you know a few of the tricks, its
  3057.     really not too hard.
  3058.     
  3059.     Many of us who were raised on 50s and 60s science fiction television
  3060.     learned that it is the brainy types who deal with computers. It almost
  3061.     gives you the impression that the computer is smart and you are dumb. As
  3062.     you use the computer, it is evaluating you, and if it figures out that
  3063.     its smarter than you, it can get your job and replace you.
  3064.     
  3065.     
  3066.      COMPUTERS DO SIMPLE TASKS     COMPUTERS DO SIMPLE TASKS     COMPUTERS DO SIMPLE TASKS
  3067.     
  3068.     A computer is a simple device. It does simple tasks. It just does them
  3069.     very fast and accurately. Computers don't even know basic things like
  3070.     how to write letters on the screen or how to read the keyboard. These
  3071.     are programs that the computer runs. Someone had to program your
  3072.     computer to do even the simplest of tasks.
  3073.     
  3074.     As you learn to use MarxMenu start with the simple menus. The SAMPLE.MNU
  3075.     is a very easy program. Study it and understand how it works. Make a
  3076.     copy of it and change one selection to run one of your programs.
  3077.     
  3078.     Once you have changed one selection, change several more. Now MarxMenu
  3079.     is running your programs, and you have made it work. Then try something
  3080.     new. Add more selections. Change the size and position of the box to fit
  3081.     your needs.
  3082.     
  3083.     Take the time to play with it. Try new commands. Build up your menu. Be
  3084.     artistic. The more you work with it, the more you will learn.
  3085.     
  3086.     
  3087.      COMPLEX TASKS ARE MADE OF SIMPLE TASKS     COMPLEX TASKS ARE MADE OF SIMPLE TASKS     COMPLEX TASKS ARE MADE OF SIMPLE TASKS
  3088.     
  3089.     As you learn more about MarxMenu, move on to QUICK.MNU. Here we use more
  3090.     of the power of the MarxMenu language. As you study this menu, you will
  3091.     notice something. Even though it looks complex, it is really a
  3092.     collection of simple tasks. Understand how the moving windows work.
  3093.     Understand that the pop-up menus are just like the main menu. You will
  3094.     see that it is really not a complex menu at all. It is a lot of simple
  3095.     processes hooked together.
  3096.     
  3097.  
  3098.     Computer Tyme * MarxMenu * Users Manual                 Page #45
  3099.     -----------------------------------------------------------------
  3100.     
  3101.     That is one of the main concepts behind programming. Complex tasks are
  3102.     built out of simple tasks. As you learn the simple tasks, you will
  3103.     quickly understand how to connect them to accomplish complex tasks.
  3104.     
  3105.     When one sees a castle, one can't help but to be impressed. But castles
  3106.     are made of stones. And you can't build castles until you understand how
  3107.     stones work. Then you realize that a castle is just a bunch of stones
  3108.     hooked together. Programming is just like that.
  3109.     
  3110.     To successfully understand MarxMenu, start at the bottom and work your
  3111.     way up. Each little trick you learn becomes another building block for
  3112.     the next trick. What you start with becomes the foundation for the work
  3113.     that you will eventually produce.
  3114.     
  3115.     
  3116.      LEARNING GOOD PROGRAMMING HABITS     LEARNING GOOD PROGRAMMING HABITS     LEARNING GOOD PROGRAMMING HABITS
  3117.     
  3118.     Programming has its pitfalls, here I hope to give you some tips that
  3119.     will help you avoid common mistakes. This, I hope will give you a head
  3120.     start on the road to MarxMenu being done right.
  3121.     
  3122.     The first concept is patience. Rome wasn't built in a day. You may not
  3123.     be able to write grand and glorious menus the first try. In fact, you
  3124.     may have trouble getting the damn thing to work at all. As you have
  3125.     probably already noticed, no program is perfect. Sometimes there are
  3126.     errorrs in the manual. Sometimes it just doesn't work like you expected,
  3127.     or does not work the same way as other programs that are familiar to
  3128.     you.
  3129.     
  3130.     But, once you complete the installation, give it some time and realize
  3131.     that there is a lot of potential here. Approach all challenges with a
  3132.     good attitude.
  3133.     
  3134.     
  3135.      USE LONG NAMES     USE LONG NAMES     USE LONG NAMES
  3136.     
  3137.     I learned computers the hard way. Out on the streets. Hanging around
  3138.     with other computer nerds in the late 70s who never went to college
  3139.     either. I was known as a Bit Wit. My first real computer was an IMSAI
  3140.     kit. Actually, it wasn't all IMSAI, it was a combination of several kits
  3141.     where no two boards came from the same supplier. It was in an IMSAI box,
  3142.     so I call it an IMSAI.
  3143.     
  3144.     It was all supposed to work together the salesman told me the day before
  3145.     they went out of business. And it all did after some redesigning. I was
  3146.     tired of fixing CB radios for a living and decided that computers were
  3147.     here to stay and that I was going to learn about them.
  3148.     
  3149.     With that in mind, everything that went wrong became an opportunity for
  3150.     growth. Not that I looked forward to things not working. I programmed
  3151.     the thing from scratch, loading binary codes into memory from an array
  3152.     of switches on the front panel.
  3153.     
  3154.  
  3155.     Computer Tyme * MarxMenu * Users Manual                 Page #46
  3156.     -----------------------------------------------------------------
  3157.     
  3158.     The first program I wrote ran the EPROM burner, which was the only
  3159.     storage device I had. After I saved this program on a chip, I used it to
  3160.     load the second program onto the chip.
  3161.     
  3162.     Eventually I wrote enough software to talk to the screen and keyboard.
  3163.     Now I could type hex codes on the screen and save them to a chip.
  3164.     Eventually I wrote a tape driver and could save stuff on tape. Later, I
  3165.     traded for a North Star disk drive and had a disk system. One 90k
  3166.     floppy. I thought I was in heaven.
  3167.     
  3168.     I was intimately familiar with my computer. All my programs were in
  3169.     object code with no documentation whatsoever. At that point, a friend of
  3170.     mine, Rufus, turned me on to a language called FORTH.
  3171.     
  3172.     Being an interesting language and very powerful, I typed in the whole
  3173.     compiler in hex and adapted it to work on my system. Once I got Forth
  3174.     up, I wrote a line editor in it. I then used the line editor to write a
  3175.     screen editor. With the screen editor, I rewrote Forth in Forth. The
  3176.     language compiled itself.
  3177.     
  3178.     From working with Forth (which is as much a religion as a programming
  3179.     language) I learned both good and bad habits. Forth is a write only
  3180.     language and is almost impossible to read even with the best of
  3181.     documentation. On the other hand, it is as close to the machine as you
  3182.     can get in a high level language.
  3183.     
  3184.     After opening up a computer store in 1984, it became time to make the
  3185.     jump from CP/M to the DOS world. Turbo Pascal offered an interesting
  3186.     solution. They had both a CP/M and DOS compiler. This meant that
  3187.     programs I wrote would run on both machines. The thing that struck me
  3188.     about Pascal was that I could read it better than Forth, and I didn't
  3189.     even know the language. Not only that, but I could follow the programs
  3190.     that other people wrote and incorporate their code into my programs.
  3191.     
  3192.     The more programs I wrote, the more I came to appreciate a language that
  3193.     was reader friendly. I could manage my programs much easier without
  3194.     having to remember so much. Other people could follow what I was doing
  3195.     easier.
  3196.     
  3197.     The important thing I learned was that readability is very important in
  3198.     a program. The more complex the program, the more important readability
  3199.     becomes.
  3200.     
  3201.     One of the main design factors in the MarxMenu language is readability.
  3202.     I could have used short names for my commands and it's not like I like
  3203.     to type. I'm still on just two fingers here. Its just that descriptive
  3204.     names are so much more meaningful when putting simple processes together
  3205.     to create complex processes.
  3206.     
  3207.  
  3208.     Computer Tyme * MarxMenu * Users Manual                 Page #47
  3209.     -----------------------------------------------------------------
  3210.     
  3211.     The point (finally) is, when creating variable names, or procedure
  3212.     names, use long meaningful names. It may take more typing, but it takes
  3213.     a lot less thinking and remembering later on. Consider the following
  3214.     example in choosing variable names.
  3215.     
  3216.      Var KlingonsDestroyedInBattle
  3217.      Var K
  3218.     
  3219.     In the above example, it is obvious which one tells you more about what
  3220.     information is stored in the variable.
  3221.     
  3222.     
  3223.      USE COMMENTS LIBERALLY     USE COMMENTS LIBERALLY     USE COMMENTS LIBERALLY
  3224.     
  3225.     Even though MarxMenu is easy to read, it still should be commented. The
  3226.     examples that come with this disk do not have as many comments as they
  3227.     should. Don't do as I do, do as I say. I'm lazy and a bad example.
  3228.     
  3229.     Comments are not compiled in your MRX files and cost you nothing at
  3230.     execution time. In order to make commenting easy, I have provided three
  3231.     separate comment commands. Learn these commands first.
  3232.     
  3233.     Every menu should include a title comment. This should include the name
  3234.     and phone number of the person who wrote it. If you have a problem with
  3235.     a menu and you send it to me, I expect a title comment. That way I can
  3236.     call you about it.
  3237.     
  3238.      Comment
  3239.      ====================================================================
  3240.     
  3241.      This comment was created by Marc Perkel 1-417-866-1222
  3242.     
  3243.      Last Updated: 01-28-90
  3244.     
  3245.      This form of comment block is better than using ';' because not using ;
  3246.      allows you to turn your word wrap feature on and do some professional
  3247.      looking editing in the comment block. This kind of comment block should
  3248.      be at the beginning of each and every menu you create.
  3249.     
  3250.      The top and bottom bars are for looks only and are not necessary to the
  3251.      comment. I strongly encourage you to use bars and do things for looks
  3252.      in source code. Looks are very important and you should put as much
  3253.      care into your comments as you do in writing a business letter.
  3254.     
  3255.      If you learn MarxMenu well, your source code may be part of your next
  3256.      job interview as you move up the corporate ladder. So you want it to
  3257.      look good.
  3258.     
  3259.      By the way, if you upload your menus to my bulleten board, I expect a
  3260.      comment block at the top of your menu with your phone number so I can
  3261.      get back to you.
  3262.     
  3263.  
  3264.     Computer Tyme * MarxMenu * Users Manual                 Page #48
  3265.     -----------------------------------------------------------------
  3266.     
  3267.      ====================================================================
  3268.      EndComment
  3269.     
  3270.     
  3271.      INDENT YOUR CODE     INDENT YOUR CODE     INDENT YOUR CODE
  3272.     
  3273.     As programs get more complex, it gets harder to match the IFs with the
  3274.     ELSEs and the ENDIFs. This is where indenting comes in. It creates a
  3275.     logical grouping of statements and you can easily see what goes with
  3276.     what.
  3277.     
  3278.      Procedure IfDemo
  3279.         IF <condition>
  3280.            <statement>
  3281.            <statement>
  3282.         ELSEIF <condition>
  3283.            <statement>
  3284.         ELSEIF <condition>
  3285.            <statement>
  3286.            <statement>
  3287.         ELSE
  3288.            <statement>
  3289.            <statement>
  3290.            WHILE <condition>
  3291.               <statement>
  3292.               <statement>
  3293.            ENDWHILE
  3294.            <statement>
  3295.         ENDIF
  3296.         <statement>
  3297.      EndProc
  3298.     
  3299.     You can easily see how this helps you follow what you are writing. Now
  3300.     here's a new trick. If you are using an IF, and plan to use an ELSE and
  3301.     an ENDIF, on the line under the IF statement, type in your ELSE and
  3302.     ENDIF lines. Then go back and insert your statements in between these
  3303.     lines. This will help you avoid forgetting the ENDIF or getting mixed up
  3304.     as to which IF matches which ELSE.
  3305.     
  3306.     A similar trick can be done with parens and brackets. When typing a left
  3307.     paren, type the matching right paren with it. Then fill in the code you
  3308.     want to put inside the parens or brackets.
  3309.     
  3310.     
  3311.      FOR DUPLICATE TASKS, USE PROCEDURES     FOR DUPLICATE TASKS, USE PROCEDURES     FOR DUPLICATE TASKS, USE PROCEDURES
  3312.     
  3313.     As menus become longer and more complex, many times you are duplicating
  3314.     a process that you already have written. Although it is easy to copy a
  3315.     block of code, it is better to create a procedure.
  3316.     
  3317.  
  3318.     Computer Tyme * MarxMenu * Users Manual                 Page #49
  3319.     -----------------------------------------------------------------
  3320.     
  3321.     With procedures, the process is put in one place and is given a name.
  3322.     Preferably a long meaningful name. Once this procedure is defined and
  3323.     named, it can be used as if it were part of the MarxMenu language. This
  3324.     makes menus smaller and easier to read. It is also a way for you to
  3325.     combine small processes into large processes. Procedures can be built
  3326.     using other procedures.
  3327.     
  3328.     Once you have a process figured out and working in a procedure, the
  3329.     whole process becomes a black box with a name that you can use
  3330.     elsewhere. The whole process is reduced down to a name that just works!
  3331.     
  3332.     Another advantage of procedures is that if circumstances change and the
  3333.     procedure needs to be modified, you only make a change one place in your
  3334.     menus, and everything that uses that procedure is automatically changed.
  3335.     This makes menu maintenance easier.
  3336.     
  3337.     
  3338.      DON'T PROGRAM YOURSELF INTO A CORNER     DON'T PROGRAM YOURSELF INTO A CORNER     DON'T PROGRAM YOURSELF INTO A CORNER
  3339.     
  3340.     Using the above techniques will allow you to write very complex menu
  3341.     systems. Failing to use these techniques can limit what you can
  3342.     accomplish. There is a term called "programming yourself into a corner"
  3343.     which refers to a program that is so poorly written, that it can't be
  3344.     modified to accommodate changes and improvements.
  3345.     
  3346.     The height of your programming abilities depends on the foundation on
  3347.     which they are built. You must avoid rushing to the top without first
  3348.     creating a firm foundation on which to build. Good technique is the
  3349.     foundation for good programming. You will have to learn it eventually,
  3350.     it is more efficient to do it right than it is to do it over.
  3351.     
  3352.     Adopting good programming habits reminds me of my favorite light bulb
  3353.     joke:
  3354.     
  3355.     Q. How many psychologists does it take to change a light bulb?
  3356.     
  3357.     A. Only one, but the light bulb has to want to change.
  3358.     
  3359.     
  3360.      FOR THE POWER USER:     FOR THE POWER USER:     FOR THE POWER USER:
  3361.     
  3362.     I originally wrote MarxMenu on a dare. I said that in one afternoon I
  3363.     could write a better menu system than one of the most popular menu
  3364.     systems. I met the challenge and then found that there is a lot of
  3365.     demand for power in a menu system. Friends started asking for this and
  3366.     that feature and this program has gone far beyond what I ever intended.
  3367.     
  3368.     The demand for more features has outpaced my ability to keep up with the
  3369.     documentation standards that I expect from other software packages that
  3370.     I buy. Please bear with me. If you find any errors in the manual, or
  3371.     bugs in the program, please let me know and I'll try to correct any
  3372.     problems.
  3373.     
  3374.  
  3375.     Computer Tyme * MarxMenu * Users Manual                 Page #50
  3376.     -----------------------------------------------------------------
  3377.     
  3378.     I also appreciate your suggestions for improvements. Many of the
  3379.     features included are a result of requests you have made. Many of you
  3380.     are using this program in ways I never dreamed.
  3381.     
  3382.     The main design philosophy behind this product is POWER and Flexibility.
  3383.     I am also committed to keeping the source code as readable as possible.
  3384.     I am loyal to the concept of using NO RAM. None of MarxMenu stays
  3385.     resident. Because of this I can claim that if you are having some kind
  3386.     of problem, it's not the fault of MarxMenu being resident, because
  3387.     MarxMenu is not resident. Also, using NO RAM allows loading of TSR's
  3388.     (memory resident programs) from the menu.
  3389.     
  3390.     For computer consultants, MarxMenu is an excellent way to make money.
  3391.     You can provide your clients with professional looking menu systems
  3392.     customized (by you) to fit their needs. You can provide complex menu
  3393.     structures not possible with any other menu system. And, because
  3394.     MarxMenu uses NO RAM, you don't have to worry about conflicts between
  3395.     MarxMenu and any other software product.
  3396.     
  3397.     Although MarxMenu is copyrighted, the program is not copy protected.
  3398.     There is nothing to prevent you from making hot copies and giving them
  3399.     away to all your clients. I would like to point out that when you give
  3400.     away something you should be selling you lose respect from your clients
  3401.     and attract those who expect you to work for free. You will make more
  3402.     money if you play by the rules. My best and most profitable clients use
  3403.     no hot software whatsoever. Think about it.
  3404.     
  3405.     
  3406.      WHERE MARXMENU IS HEADING     WHERE MARXMENU IS HEADING     WHERE MARXMENU IS HEADING
  3407.     
  3408.     MarxMenu will continue to grow and develope. Because MarxMenu is an
  3409.     overlaid program I have the ability to add as many features as I want
  3410.     without slowing down load or processing speed. In fact MarxMenu is 10
  3411.     times as fast today as it was in 1989 and its vocabulary of commands has
  3412.     grown 10 times as well.
  3413.     
  3414.     I'm often asked the question, what other operating systems will I
  3415.     support? Will there be a Windows version? An OS/2 version? Unix?
  3416.     
  3417.     Let me say first that my primary commitment is to the OS that most
  3418.     people actually use, and that is DOS. I am not moved by the industry
  3419.     politics. I focus on the systems that make computers and networks
  3420.     actually work.
  3421.     
  3422.     So for those of you who are asking the question "Will there be a Windows
  3423.     version of MarxMenu?" The answer is no. The reason is in my view,
  3424.     windows is too unstable a platform in which to develop code for. As I
  3425.     see it, Windows is a programmer angry environment and is fatally flawed
  3426.     by design. I consider this path a mistake and a mistake that I am not
  3427.     going to make.
  3428.     
  3429.  
  3430.     Computer Tyme * MarxMenu * Users Manual                 Page #51
  3431.     -----------------------------------------------------------------
  3432.     
  3433.     Will there be an OS/2 version? Likely. This OS seems to be going in the
  3434.     right direction. I have been able to control both DOS and OS/2 tasks
  3435.     from the VDM. Although the two major OS players are equally arrogant on
  3436.     what OS they are going to force down our throats, at least the one from
  3437.     IBM actually works.
  3438.     
  3439.     
  3440.      A WORD TO WRITERS AND REVIEWERS     A WORD TO WRITERS AND REVIEWERS     A WORD TO WRITERS AND REVIEWERS
  3441.     
  3442.     MarxMenu is a multi-level product fulfilling the needs of a large
  3443.     variety of computer users. It is difficult to compare this product on a
  3444.     feature to feature basis. This is because MarxMenu has about 10 times as
  3445.     many features as any other menu system. These features allow this
  3446.     product to target a very broad variety of computer users, from the
  3447.     novice user, who will only use the LEVEL1 or QUICK menus, to large
  3448.     companies with hundreds of file servers controlled through the MarxMenu
  3449.     language.
  3450.     
  3451.     One common mistake that writers make when evaluating MarxMenu, is in the
  3452.     area of ease of use. If you are looking for ease of use, stick with the
  3453.     simple menus and the self-configuring menus such as the LEVEL1, QUICK
  3454.     and QUICKNOV examples. By looking at it this way, MarxMenu will be as
  3455.     easy to use as any other menus system out there and can be compared for
  3456.     similar features. Even though MarxMenu supports complex commands, it is
  3457.     not necessary to use them in simple menus.
  3458.     
  3459.     If you are doing a comparative review, please let me know on what basis
  3460.     you are making comparisons. This way I can assist you by providing you
  3461.     accurate information in the area of your interest. If you are looking
  3462.     for simple, I can show you simple; if you are looking for power, I can
  3463.     show you power.
  3464.     
  3465.     On the other hand, if you are reviewing power tools and network
  3466.     utilities, you might want to look at the Network Survival Kit and not
  3467.     just MarxMenu. So if you have a copy of only this program, give me a
  3468.     call and I'll get you the latest and greatest.
  3469.     
  3470.     In addition to our software, we also have color prints and color slides
  3471.     available as well as product literature and sample reviews. These are
  3472.     available to make your job easier and help you make those deadlines.
  3473.     
  3474.     MarxMenu tends to be best reviewed as a long article rather than a short
  3475.     one. It is very good if you have a lot of space to fill. With a long
  3476.     article, you can get really in depth with what MarxMenu is able to do.
  3477.     
  3478.     Any publication which reviews any of my products gets a site license to
  3479.     that product whether I like the review or not. Our position is that if
  3480.     you are using MarxMenu yourself, you will get to know it better.
  3481.     
  3482.  
  3483.     Computer Tyme * MarxMenu * Users Manual                 Page #52
  3484.     -----------------------------------------------------------------
  3485.     
  3486.     Any questions you have about any of my products, feel free to call. The
  3487.     main thing I ask is that you get the product name, price, our address,
  3488.     and our phone number right.
  3489.     
  3490.     
  3491.      USING MARXHELP     USING MARXHELP     USING MARXHELP
  3492.     
  3493.     MarxHelp is a TSR pop-up help program for MarxMenu. It acts as an online
  3494.     reference guide to all of the MarxMenu commands. MarxHelp only takes 8k
  3495.     of ram and is very useful while writing your MarxMenu applications. It
  3496.     gives you the complete manual on-line and is fully indexed
  3497.     electronically. It even has a keyword search to help you find the
  3498.     command you are looking for.
  3499.     
  3500.     I strongly encourage the use of MarxHelp because it contains the latest
  3501.     documentation and its faster to use than the printed manual. Once you
  3502.     get used to using it, you won't want to go back to paper documentation.
  3503.     
  3504.     To load MarxHelp type MARXHELP at the command line. Then if you want to
  3505.     pop-up an index press Shift-F3. The Shift-F2 key will repeat your last
  3506.     help topic and Shift-F1 will look up the word your cursor is on.
  3507.     
  3508.     To get more help on MarxMenu type MarxHelp /?. If you need to unload
  3509.     MarxHelp from memory, type MarxHelp /U. Once you bring up MarxHelp, read
  3510.     the Help on Help section.
  3511.     
  3512.     MarxHelp comes with the Computer Tyme Network Survival Kit. It can also
  3513.     be downloaded from our support BBS. It does not come bundled with the
  3514.     single user version.
  3515.     
  3516.     
  3517.      PRINTING THE EXAMPLE FILES     PRINTING THE EXAMPLE FILES     PRINTING THE EXAMPLE FILES
  3518.     
  3519.     MarxMenu comes with several example programs from simple to complex. The
  3520.     first thing to do is print the sample menus and study them. Start with
  3521.     the easy ones. You may never need to use any of the more complex ones,
  3522.     but if you do, a large variety of advanced techniques are demonstrated.
  3523.     
  3524.     By studying the sample menus, and comparing them to this manual, it
  3525.     should be fairly easy to become productive writing your own menus.
  3526.     
  3527.     
  3528.      SECURITY ISSUES     SECURITY ISSUES     SECURITY ISSUES
  3529.     
  3530.     Different users have different security needs that range from none to
  3531.     extreme. If you are in the none category, then you can skip this
  3532.     chapter. But if you need all the security you can get, then read on.
  3533.     
  3534.     First of all, DOS is not a secure operating system. There are various
  3535.     third party programs out there but what I'm going to cover here is how
  3536.     to make DOS secure as possible working with what you get with DOS.
  3537.     
  3538.  
  3539.     Computer Tyme * MarxMenu * Users Manual                 Page #53
  3540.     -----------------------------------------------------------------
  3541.     
  3542.     The first thing to do is add the command BREAK=OFF to your CONFIG.SYS
  3543.     file. This prevents programs from breaking out of batch files. Avoid
  3544.     using commands that are internal DOS commands like DIR from inside a
  3545.     menu or inside batch files. Use the D.EXE program instead.
  3546.     
  3547.     Use the LockWord option in the screen blanker so that if a menu is left
  3548.     unattended, it will not be accessable to just anyone walking up to a
  3549.     machine. The LockWord command requires the user type a password to
  3550.     release the screen blanker. If you are on a Novell network, you can use
  3551.     the UseNovPassword command. This forces the user to type their Novell
  3552.     password to unblank the screen.
  3553.     
  3554.     If a menu choice accesses sensitive materials, then put a password on
  3555.     it. Also, make sure the SUPERVISOR user has a password. There are many
  3556.     times I've walked up to a server and logged in as supervisor and got
  3557.     right in. Make sure that intruder detection is set on. If you don't know
  3558.     what intruder detection is, read the Novell manuals.
  3559.     
  3560.     You can also use the LogoffTime command to log users off the network
  3561.     after a given amount of inactivity. This also helps kick people off so
  3562.     that you can upgrade MarxMenu from time to time. (MARXMENU.OVR can't be
  3563.     updated on a network unless all users are out of the menu.)
  3564.     
  3565.     If you have applications that allow you to shell to DOS, you can prevent
  3566.     them from getting to DOS by changing your COMSPEC to point to something
  3567.     other than COMMAND.COM. You could also rename COMMAND.COM in case a
  3568.     program is looking for this file by name. If this doesn't work for you
  3569.     then you can use the COMSP.EXE program to do the same thing.
  3570.     
  3571.     Another defense is to lock the door to the computer room at night and
  3572.     teach employees security policies and make sure they use them. Security
  3573.     policies include such rules as not having your password written on a
  3574.     stick-em note stuck on the side of your monitor.
  3575.     
  3576.     If you are on a network, buy diskless workstations. People can't copy
  3577.     files on or off a network that doesn't have a disk drive. It helps keep
  3578.     viruses off your server and lets the network administrators control what
  3579.     is and isn't on the network.
  3580.     
  3581.     
  3582.      KEEPING USERS IN THE MENU     KEEPING USERS IN THE MENU     KEEPING USERS IN THE MENU
  3583.     
  3584.     Some people need to keep users in the menu and prevent them from
  3585.     escaping to a command line no matter what. There are several things you
  3586.     need to do to accomplish this. The first thing is to use BREAK.SYS to
  3587.     prevent breaking out of batch files. Then you use a shell statement to
  3588.     load COMMAND.COM temporary instead of permanent. Then you use COMSP.EXE
  3589.     to prevent programs from shelling out to DOS.
  3590.     
  3591.  
  3592.     Computer Tyme * MarxMenu * Users Manual                 Page #54
  3593.     -----------------------------------------------------------------
  3594.     
  3595.      USING BREAK.SYS     USING BREAK.SYS     USING BREAK.SYS
  3596.     
  3597.     MarxMenu comes with a device driver called BREAK.SYS. This program
  3598.     enhances the BREAK ON and BREAK off functions of DOS to prevent users
  3599.     from using CTRL-C to get out of batch files.
  3600.     
  3601.     Unlike all the other similar programs this one is smart. It only kills
  3602.     CTRL-C if your in COMMAND.COM but allows your applications to see
  3603.     CTRL-C. And, it only uses about 400 bytes of ram.
  3604.     
  3605.     All you have to do is add a line to your CONFIG.SYS file:
  3606.     
  3607.     DEVICE=BREAK.SYS
  3608.     
  3609.     If your using BREAK.SYS with QEMM or other memory manager, load the
  3610.     memory manager first.
  3611.     
  3612.     BREAK.SYS can be enabled or disabled by using the BREAK ON and BREAK OFF
  3613.     commands either from the command line or from batch files.
  3614.     
  3615.     Although BREAK.SYS is better than DOS, it isn't perfect. There are still
  3616.     situations where you can break out of batch files. If it is important to
  3617.     not break out then you can use it as follows:
  3618.     
  3619.     DEVICE=BREAK.SYS /C
  3620.     
  3621.     Using it this way the CTRL-C key is disabled completely. Your
  3622.     application software will not get any CTRL-C.
  3623.     
  3624.     BREAK.SYS has another switch /T that works like /C except that once you
  3625.     execute BREAK ON then it returns to smart CTRL-C handling. The idea here
  3626.     is that more often you need bullet proof protection while the system is
  3627.     booting up, but after going to the main menu you can switch to smart
  3628.     protection. At the end of your bootup batch files add the lines:
  3629.     
  3630.     BREAK ON
  3631.     BREAK OFF
  3632.     
  3633.     This will switch BREAK.SYS into smart mode checking.
  3634.     
  3635.     BREAK.SYS has another feature that makes BREAK ON work better. If you
  3636.     use it like this:
  3637.     
  3638.     DEVICE=BREAK.SYS /B
  3639.     
  3640.     Then when you run BREAK ON and the users presses CTRL-\ it will break
  3641.     you out of programs you might otherwise be stuck in. This feature is
  3642.     great for software developers to use when testing code.
  3643.     
  3644.  
  3645.     Computer Tyme * MarxMenu * Users Manual                 Page #55
  3646.     -----------------------------------------------------------------
  3647.     
  3648.      USING THE SHELL= COMMAND     USING THE SHELL= COMMAND     USING THE SHELL= COMMAND
  3649.     
  3650.     If you really want to make it impossible to break out to DOS then change
  3651.     you SHELL= statement in your CONFIG.SYS file to read:
  3652.     
  3653.     SHELL=COMMAND.COM /E:400 /C AUTOEXEC.BAT
  3654.     
  3655.     With this command, if they get out of the batch file it locks the system
  3656.     up. In some cases this is better than letting the user get access to the
  3657.     command line.
  3658.     
  3659.     To use this feature you need to stay in a steady stream of batch file
  3660.     all the way to the menu. If you ever exit or break out of the batch
  3661.     files the system locks up. Without the /P switch, COMMAND.COM is never
  3662.     loaded permanent. So if AUTOEXEC and the batch file that they jump to
  3663.     ever finish the computer locks up. You can't break out to COMMAND.COM
  3664.     because there is no COMMAND.COM to break out to.
  3665.     
  3666.     If you try to use this with novell's LOGIN.EXE then you won't be able to
  3667.     use the 'EXIT <string>' command in your login script. This is because
  3668.     EXIT will exit to DOS and lock up. You will need to create a LOG.BAT
  3669.     file as follows:
  3670.     
  3671.      LOG.BAT
  3672.      =======
  3673.      :Start
  3674.      LOGIN
  3675.      REM ** Stay in loop till LOGIN succeeds **
  3676.      if ErrorLevel 1 goto Start
  3677.      ...
  3678.      <other startup commands>
  3679.      ...
  3680.      Marx MainMenu
  3681.     
  3682.     To get to a command line using this system you will need to run
  3683.     COMMAND.COM or DOLIST.EXE from the menu. In the case of COMMAND.COM you
  3684.     will run:
  3685.     
  3686.      COMMAND.COM /E:400
  3687.     
  3688.     This ensures that this second COMMAND.COM has enough environment space
  3689.     to allow for SET commands.
  3690.     
  3691.  
  3692.     Computer Tyme * MarxMenu * Users Manual                 Page #56
  3693.     -----------------------------------------------------------------
  3694.     
  3695.      CONDITIONAL STATEMENTS     CONDITIONAL STATEMENTS     CONDITIONAL STATEMENTS
  3696.     
  3697.     MarxMenu has a full complement of conditional statements. They are as
  3698.     follows:
  3699.     
  3700.      IF->ELSE->ENDIF           Where, IF [condition]
  3701.                                          statement
  3702.                                          statement
  3703.                                       ELSE
  3704.                                          statement
  3705.                                          statement
  3706.                                       ENDIF
  3707.     
  3708.      IF->THEN                  Where, IF [condition] THEN statement
  3709.     
  3710.      IF->ELSE->ELSEIF->ENDIF   Where, IF [condition]
  3711.                                          statement
  3712.                                          statement
  3713.                                       ELSEIF [condition]
  3714.                                          statement
  3715.                                          statement
  3716.                                       ELSEIF [condition]
  3717.                                          statement
  3718.                                          statement
  3719.                                       ELSE
  3720.                                          statement
  3721.                                          statement
  3722.                                       ENDIF
  3723.     
  3724.         REPEAT->UNTIL          Where, REPEAT
  3725.                                          statement
  3726.                                          statement
  3727.                                       UNTIL [condition]
  3728.     
  3729.         WHILE->ENDWHILE        Where, WHILE [conditon]
  3730.                                          statement
  3731.                                          statement
  3732.                                       ENDWHILE
  3733.     
  3734.         PROCEDURE->ENDPROC     PROCEDURE (name)
  3735.                                          statement
  3736.                                          statement
  3737.                                ENDPROC
  3738.     
  3739.         LOOP->ENDLOOP          LOOP (number)
  3740.                                          statement
  3741.                                          statement
  3742.                                ENDLOOP
  3743.     
  3744.  
  3745.     Computer Tyme * MarxMenu * Users Manual                 Page #57
  3746.     -----------------------------------------------------------------
  3747.     
  3748.      ENVIRONMENT VARIABLES USED BY MARXMENU     ENVIRONMENT VARIABLES USED BY MARXMENU     ENVIRONMENT VARIABLES USED BY MARXMENU
  3749.     
  3750.     MarxMenu uses a variety of environment variables to control various
  3751.     MarxMenu functions. Many of these variables are optional.
  3752.     
  3753.      Set MouseX=(Number)
  3754.     
  3755.     Sets the horizontal sensitivity of the mouse. Default is 15.
  3756.     
  3757.      Set MouseY=(Number)
  3758.     
  3759.     Sets the vertical sensitivity of the mouse. Default is 25.
  3760.     
  3761.      Set MxEcho=(On/Off)
  3762.     
  3763.     If you set the first line of MARX.BAT to @ECHO %MXECHO% then by setting
  3764.     the environment variable MxEcho to ON or OFF, you can control the echo
  3765.     in the MARX.BAT file without having to edit it. This allows you to do
  3766.     diagnostics on a network without messing up other users.
  3767.     
  3768.      Set Temp=(Directory)
  3769.     
  3770.     Normally, MarxMenu creates temporary batch files in the same directory
  3771.     as MARXMENU.EXE. If you set TEMP to a directory, MarxMenu will use this
  3772.     directory instead. This complies with Windows / DOS 5.0 standards.
  3773.     
  3774.      Set MxCmd=(Command)
  3775.     
  3776.     MarxMenu uses MXCMD to control what the MARX.BAT file executes. You must
  3777.     have enough environment space available for MarxMenu to use.
  3778.     
  3779.      Set KSV=
  3780.     
  3781.     MarxMenu stores a series of keystrokes in the KSV variable when
  3782.     SavePosition is On.
  3783.     
  3784.      Set STATION=(Number)
  3785.     
  3786.     If you are on a network that is not Novell, then you should set this
  3787.     variable to a unique number for each station between 0 and 255.
  3788.     
  3789.      Set TASK=(Number)
  3790.     
  3791.     If you are running a multi-tasking operating system other than DesqView,
  3792.     and MarxMenu is running more than one task, then set an environment
  3793.     variable TASK to a unique number for each task.
  3794.     
  3795.     MarxMenu also accesses your COMSPEC variable and your PATH variable when
  3796.     executing programs.
  3797.     
  3798.  
  3799.     Computer Tyme * MarxMenu * Users Manual                 Page #58
  3800.     -----------------------------------------------------------------
  3801.     
  3802.      MARXMENU COMMANDS     MARXMENU COMMANDS     MARXMENU COMMANDS
  3803.     
  3804.     MarxMenu contains a rich set of commands. They are listed here
  3805.     alphabetically and by command category. You don't have to learn them all
  3806.     so don't let the size of the list scare you.
  3807.     
  3808.     In the following command list, words contained within ( ) are command
  3809.     parameters that must be included after the menu command. If the
  3810.     parameter is not required, it will be contained in [ ]. The numeric
  3811.     range for the <column> parameter is 1 - 80 decimal, and for the <row>
  3812.     parameter the range is 1 - 25, 43, or 50 decimal depending on how many
  3813.     lines your monitor displays.
  3814.     
  3815.     
  3816.      | (Vertical Bar)     | (Vertical Bar)     | (Vertical Bar)
  3817.     
  3818.     Forces MarxMenu interpretation under an OnKey Command. If not for the |
  3819.     (Vertical Bar), the command under an OnKey would be written to a batch
  3820.     file. The | is only used under OnKey commands.
  3821.     
  3822.      Example:
  3823.        OnKey 'S'
  3824.          |password 'hello' 3 4
  3825.          ECHO Type EXIT to return to menu
  3826.          COMMAND.COM
  3827.     
  3828.        OnKey 'X'
  3829.          |if UpperCase(ReadEnv('USERNAME')) = 'SUPERVISOR'
  3830.            SYSCON
  3831.          |else
  3832.          |  SecurityBreach('You do not have access to this function!')
  3833.          |endIf
  3834.     
  3835.     Category: Misc
  3836.     
  3837.     
  3838.      ( : Operator     ( : Operator     ( : Operator
  3839.     
  3840.     Starts logical interpreter grouping.
  3841.     
  3842.     Used to force evalution of an expression other than the normal left to
  3843.     right order.
  3844.     
  3845.      Example:
  3846.        2 * 3 + 2     evaluates to  8
  3847.        2 * ( 3 + 2 ) evaluates to  10
  3848.     
  3849.     See Also: )
  3850.     
  3851.     Category: Misc
  3852.     
  3853.  
  3854.     Computer Tyme * MarxMenu * Users Manual                 Page #59
  3855.     -----------------------------------------------------------------
  3856.     
  3857.      ) : Operator     ) : Operator     ) : Operator
  3858.     
  3859.     Ends logical interpreter grouping.
  3860.     
  3861.     See Also: (
  3862.     
  3863.     Category: Misc
  3864.     
  3865.     
  3866.      * : Operator     * : Operator     * : Operator
  3867.     
  3868.     Multiplies two numbers.
  3869.     
  3870.      Example:
  3871.        4 * 6 = 24
  3872.     
  3873.     Category: Math Float
  3874.     
  3875.     
  3876.      + : Operator     + : Operator     + : Operator
  3877.     
  3878.     Adds two numbers or two strings.
  3879.     
  3880.      Example:
  3881.        "Hello" + " " + "World" = "Hello World"
  3882.        2 + 2 = 4
  3883.     
  3884.     Category: Math String Float
  3885.     
  3886.     
  3887.      - : Operator     - : Operator     - : Operator
  3888.     
  3889.     Subtracts two numbers.
  3890.     
  3891.      Example:
  3892.        7 - 4 = 3
  3893.     
  3894.     Category: Math Float
  3895.     
  3896.     
  3897.      / : Operator     / : Operator     / : Operator
  3898.     
  3899.     Divides two numbers.
  3900.     
  3901.      Example:
  3902.        6 / 3 = 2
  3903.     
  3904.     Category: Math Float
  3905.     
  3906.  
  3907.     Computer Tyme * MarxMenu * Users Manual                 Page #60
  3908.     -----------------------------------------------------------------
  3909.     
  3910.      < : Operator     < : Operator     < : Operator
  3911.     
  3912.     Less Than - Compares two numbers or strings.
  3913.     
  3914.      Example:
  3915.        3 < 4 = True
  3916.        'AB' < 'CD' = True
  3917.     
  3918.     Category: Math String Float
  3919.     
  3920.     
  3921.      <= : Operator     <= : Operator     <= : Operator
  3922.     
  3923.     Less Than or Equal - Compares two numbers or strings.
  3924.     
  3925.      Example:
  3926.        3 <= 4 = True
  3927.        'AB' <= 'CD' = True
  3928.     
  3929.     Category: Math String Float
  3930.     
  3931.     
  3932.      <> : Operator     <> : Operator     <> : Operator
  3933.     
  3934.     Not Equal - Compares two numbers or strings.
  3935.     
  3936.      Example:
  3937.        3 <> 4 = True
  3938.        'AB' <> 'CD' = True
  3939.     
  3940.     Category: Math String Float
  3941.     
  3942.     
  3943.      = : Operator     = : Operator     = : Operator
  3944.     
  3945.     Equal - Compares two numbers or strings.
  3946.     
  3947.      Example:
  3948.        3 = 4 = False
  3949.        'AB' - 'CD' = False
  3950.     
  3951.     Category: Math String Float
  3952.     
  3953.     
  3954.      > : Operator     > : Operator     > : Operator
  3955.     
  3956.     Greater Than - Compares two numbers or strings.
  3957.     
  3958.      Example:
  3959.        3 > 4 = False
  3960.        'AB' > 'CD' = False
  3961.     
  3962.  
  3963.     Computer Tyme * MarxMenu * Users Manual                 Page #61
  3964.     -----------------------------------------------------------------
  3965.     
  3966.     Category: Math String Float
  3967.     
  3968.     
  3969.      >= : Operator     >= : Operator     >= : Operator
  3970.     
  3971.     Greater Than or Equal - Compares two numbers or strings.
  3972.     
  3973.      Example:
  3974.        3 >= 4 = False
  3975.        'AB' >= 'CD' = False
  3976.     
  3977.     Category: Math String Float
  3978.     
  3979.     
  3980.      %MenuFileName : String     %MenuFileName : String     %MenuFileName : String
  3981.     
  3982.     This returns the name of the current menu file including the complete
  3983.     path. It can be used under an OnKey statement to edit the current menu
  3984.     as follows:
  3985.     
  3986.      Example:
  3987.        OnKey 'E'
  3988.          EDIT %MenuFileName
  3989.     
  3990.     Category: String
  3991.     
  3992.     
  3993.      Abs : Number     Abs : Number     Abs : Number
  3994.     
  3995.     Returns the absolute value of a number. The absolute value is the value
  3996.     of the number without the sign.
  3997.     
  3998.      Example:
  3999.         Abs(-6) returns 6
  4000.     
  4001.     Category: Math Float
  4002.     
  4003.     
  4004.      Actual     Actual     Actual
  4005.     
  4006.     If you want to read or write to a variable directly that is referrencing
  4007.     another variable I have provided the command Actual. Actual overrides
  4008.     any pointers set by the command Loc.
  4009.     
  4010.      Example:
  4011.         Dispose Actual B
  4012.         Actual B = 5
  4013.     
  4014.     See Also: Loc
  4015.     
  4016.     Category: Variable
  4017.     
  4018.  
  4019.     Computer Tyme * MarxMenu * Users Manual                 Page #62
  4020.     -----------------------------------------------------------------
  4021.     
  4022.      Alias     Alias     Alias
  4023.     
  4024.     Alias <name> = <string>
  4025.     This is a compiler level text substitution command. When <name> is
  4026.     defined as <string> whenever you use <name> its the same to the compiler
  4027.     as if <string> were typed there.
  4028.     
  4029.      Example:
  4030.        Alias TwoPlusThree = "(2 + 3)"
  4031.        .
  4032.        .
  4033.        .
  4034.        2 * TwoPlusThree = 10
  4035.        .
  4036.        Writeln TwoPlusThree
  4037.     
  4038.     Writeln TwoPlusThree is the same as Writeln (2 + 3)
  4039.     
  4040.     Category: Misc
  4041.     
  4042.     
  4043.      AllowAbort (On/Off)     AllowAbort (On/Off)     AllowAbort (On/Off)
  4044.     
  4045.     MarxMenu was written to allow processes to be aborted and in a very
  4046.     smooth way eliminating the need for the user to deal with complicated
  4047.     error logic. In some cases this has gotten in the way of specific
  4048.     control when the user presses the escape key or other error occurs.
  4049.     
  4050.     If AllowAbort is set to off, MarxMenu will continue on to the next
  4051.     command. You can then test LastKey to see if the escape key was pressed.
  4052.     If the user presses escape a nul string is returned.
  4053.     
  4054.     See Also: AllowEsc
  4055.     
  4056.     Category: Misc
  4057.     
  4058.     
  4059.      AllowEsc (On/Off)     AllowEsc (On/Off)     AllowEsc (On/Off)
  4060.     
  4061.     Several MarxMenu commands such as PickOne, PickMany and PickFile allow
  4062.     you to press escape to abort. If you turn AllowEsc off then the escape
  4063.     key is ignored. This forces the user to make a choice.
  4064.     
  4065.     See Also: AllowAbort
  4066.     
  4067.     Category: Misc
  4068.     
  4069.  
  4070.     Computer Tyme * MarxMenu * Users Manual                 Page #63
  4071.     -----------------------------------------------------------------
  4072.     
  4073.      And : Operator     And : Operator     And : Operator
  4074.     
  4075.     Returns logical And if operators are boolean; or bitwise And if
  4076.     operators are numeric.
  4077.     
  4078.      Example:
  4079.        if (Month = Dec) and (Day = 25) then Writeln 'Merry Christmas!'
  4080.        7 and 3 = 3  ;0111 and 0011
  4081.     
  4082.     Note: The parentheses are necessary because MarxMenu interprets fron
  4083.     right to left.
  4084.     
  4085.     See Also: Or Xor Not
  4086.     
  4087.     Category: Math Boolean
  4088.     
  4089.     
  4090.      AppendArray (Array,Value)     AppendArray (Array,Value)     AppendArray (Array,Value)
  4091.     
  4092.     AppendArray appends Value to the end of an array. The number of elements
  4093.     is increased by one. It is not used to append two arrays "end to end".
  4094.     
  4095.      Example:
  4096.        var X
  4097.        X[1] = 'TEST1'
  4098.        AppendArray(X,'TEST2')
  4099.     
  4100.        Loop X
  4101.           Writeln X[LoopIndex]
  4102.        EndLoop
  4103.     
  4104.      This Prints:
  4105.        TEST1
  4106.        TEST2
  4107.     
  4108.     Category: Array
  4109.     
  4110.     
  4111.      ApplicationMemory : Number     ApplicationMemory : Number     ApplicationMemory : Number
  4112.     
  4113.     Returns the number of bytes of memory available to an application when
  4114.     MarxMenu exits out to the MARX.BAT file. This is the actual amount of
  4115.     ram available to your application.
  4116.     
  4117.     See Also: FreeMemory
  4118.     
  4119.     Category: Memory
  4120.     
  4121.  
  4122.     Computer Tyme * MarxMenu * Users Manual                 Page #64
  4123.     -----------------------------------------------------------------
  4124.     
  4125.      ArcTan (Radians) : Real     ArcTan (Radians) : Real     ArcTan (Radians) : Real
  4126.     
  4127.     Returns the ArcTangent of a real.
  4128.     
  4129.     Category: Math Float
  4130.     
  4131.     
  4132.      AssignList (2D Array)     AssignList (2D Array)     AssignList (2D Array)
  4133.     
  4134.     AssignList reads the network assign list table and return a 2
  4135.     dimensional array containing the local names and the network names.
  4136.     
  4137.      Example:
  4138.     
  4139.      var X
  4140.      AssignList (X)
  4141.     
  4142.      Loop X
  4143.         Writeln X[LoopIndex,1] '=' X[LoopIndex,2]
  4144.      EndLoop
  4145.     
  4146.     See Also: CancelListEntry MakeListEntry
  4147.     
  4148.     Category: Novell MSNet Vines
  4149.     
  4150.     
  4151.      BadDate : Boolean     BadDate : Boolean     BadDate : Boolean
  4152.     
  4153.     Set to true if you try to convert a string to a date and the date is
  4154.     invalid.
  4155.     
  4156.      Example:
  4157.        TimeOf('02-30-92')   ;Sets BadDate to True
  4158.     
  4159.     See Also: TimeOf
  4160.     
  4161.     Category: Time
  4162.     
  4163.     
  4164.      Bat (string)     Bat (string)     Bat (string)
  4165.     
  4166.     Used to write a line to the batch file the same way OnKey does. All the
  4167.     same rules apply. The batch file is created when the menu exits.
  4168.     MarxMenu exits with ErrorLevel 0 unless some other value has been
  4169.     specified using the ExitCode command.
  4170.     
  4171.     When using Bat under an OnKey statement, be sure to use the vertical bar
  4172.     in front of it. Bat gives you more control over what is sent to the
  4173.     batch file that MARX.BAT executes.
  4174.     
  4175.      Example:
  4176.        OnKey 'D'
  4177.          CLS
  4178.          |BAT "DIR " + HomeDirectory + '\' + UserName
  4179.          PAUSE
  4180.     
  4181.  
  4182.     Computer Tyme * MarxMenu * Users Manual                 Page #65
  4183.     -----------------------------------------------------------------
  4184.     
  4185.     See Also: OnKey
  4186.     
  4187.     Category: Execution
  4188.     
  4189.     
  4190.      BatFileName : String     BatFileName : String     BatFileName : String
  4191.     
  4192.     Returns the name of the batch file that MarxMenu would create if
  4193.     MarxMenu were to create a batch file automatically.
  4194.     
  4195.     Category: String
  4196.     
  4197.     
  4198.      BigShadow     BigShadow     BigShadow
  4199.     
  4200.     Selects big shadow type. This is the default shadow.
  4201.     
  4202.     See Also: SmallShadow ShadowPosition ShadowColor
  4203.     
  4204.     Category: Display
  4205.     
  4206.     
  4207.      BinString (Number, Length) : String     BinString (Number, Length) : String     BinString (Number, Length) : String
  4208.     
  4209.     BinString converts a number into a base 2 binary string. If Length > 0
  4210.     then the number will have enough leading zeros to make it Length long.
  4211.     If Length = 0 then leading zeros are removed. Length must be 32 or less.
  4212.     
  4213.      Example:
  4214.         Writeln HexSt(45,8)    ;returns 00101101
  4215.         Writeln HexSt(45,0)    ;returns 101101
  4216.     
  4217.     See Also: HexString
  4218.     
  4219.     Category: String
  4220.     
  4221.     
  4222.      Blanked : Boolean     Blanked : Boolean     Blanked : Boolean
  4223.     
  4224.     Returns true if the screen blanker has kicked it. This lets you alter
  4225.     your idle program based on whether the screen blanker is active.
  4226.     
  4227.     See Also: IdleProgram
  4228.     
  4229.     Category: Display
  4230.     
  4231.     
  4232.      BlankMessage (string)     BlankMessage (string)     BlankMessage (string)
  4233.     
  4234.     When the screen blanks out, this one line message is displayed. If
  4235.     BlankMessage is not set, the date and time will be displayed.
  4236.     
  4237.      Example:
  4238.        BlankMessage = 'Out to Lunch!'
  4239.     
  4240.  
  4241.     Computer Tyme * MarxMenu * Users Manual                 Page #66
  4242.     -----------------------------------------------------------------
  4243.     
  4244.     See Also: ConsolePos
  4245.     
  4246.     Category: String
  4247.     
  4248.     
  4249.      BlankScreenProgram : Procedure     BlankScreenProgram : Procedure     BlankScreenProgram : Procedure
  4250.     
  4251.     This sets the blank screen program to use and overrides MarxMenu's
  4252.     internal screen blanker. It also overrides the IdleProgram so if you are
  4253.     running something in your idle program that you want to continue to run
  4254.     when the screen goes blank, call your idle procedure from the screen
  4255.     blanker procedure.
  4256.     
  4257.     If you exit your screen blanker and MarxMenu thinks the screen should
  4258.     still be blank it will call it again.
  4259.     
  4260.     When MarxMenu decides to blank the screen it calls BlankScreenProgram.
  4261.     When MarxMenu decides it's ready to unblank the screen it sets UnBlank
  4262.     to true.
  4263.     
  4264.     Thus commands like UseNovPassword, LockWord, and BlankTime will work
  4265.     with your screen blanker.
  4266.     
  4267.     To set up a blank screen program:
  4268.     
  4269.      BlankScreenProgram = Loc (Procedure Name)
  4270.     
  4271.     To switch back to normal screen blanking run:
  4272.     
  4273.      Dispose(ScreenBlankProgram)
  4274.     
  4275.     See Also: IdleProgram UnBlank
  4276.     
  4277.     Category: Display
  4278.     
  4279.     
  4280.      BlankTime (minutes)     BlankTime (minutes)     BlankTime (minutes)
  4281.     
  4282.     Sets the number of minutes before the screen blanks out to prevent
  4283.     screen burn. Since this is not a resident program, screen blanking is
  4284.     only active while the menu system is active. Setting BlankTime to 0
  4285.     prevents screen blanking.
  4286.     
  4287.      Example:
  4288.        BlankTime = 10  ;set to 10 minutes
  4289.        BlankTime = 0   ;disables screen blanking
  4290.     
  4291.     Category: Display
  4292.     
  4293.  
  4294.     Computer Tyme * MarxMenu * Users Manual                 Page #67
  4295.     -----------------------------------------------------------------
  4296.     
  4297.      Blink : Boolean     Blink : Boolean     Blink : Boolean
  4298.     
  4299.     Blink is a boolean variable that when set to true allows you to specify
  4300.     colors that will blink. To make a color that blinks, set the background
  4301.     color to a bright color. A bright color is a color from 8 to 15.
  4302.     
  4303.     Normally, when Blink is off, MarxMenu strips the high bit of the colors.
  4304.     When Blink is on, high bit stripping is disabled.
  4305.     
  4306.      Example:
  4307.         Blink
  4308.         TextColor Green LRed
  4309.     
  4310.     Because the background color is light red, the text will blink.
  4311.     
  4312.     Warning: Blinking characters can cause headaches and eye strain. I
  4313.     resisted adding this feature for a long time because I personally hate
  4314.     excessive blinking characters on the screen. I now recognize that
  4315.     blinking can be very effective when used correctly. Please use blinking
  4316.     sparingly.
  4317.     
  4318.     Category: Color
  4319.     
  4320.     
  4321.      BlockBox     BlockBox     BlockBox
  4322.     
  4323.     Selects block type box for menu borders.
  4324.     
  4325.     See Also: SingleLineBox DoubleLineBox CustomBox NoBoxBorder
  4326.     
  4327.     Category: Display
  4328.     
  4329.     
  4330.      BootDrive : String     BootDrive : String     BootDrive : String
  4331.     
  4332.     Returns the drive letter of the boot drive. Requires DOS 4+ to work. On
  4333.     diskless workstations the BootDrive will be A.
  4334.     
  4335.     Catagory: File
  4336.     
  4337.     
  4338.      BoxBorderColor (forecolor,backcolor)     BoxBorderColor (forecolor,backcolor)     BoxBorderColor (forecolor,backcolor)
  4339.     
  4340.     Sets colors for box border.
  4341.     
  4342.      Example:
  4343.        BoxBorderColor Green Blue
  4344.     
  4345.     Category: Color
  4346.     
  4347.  
  4348.     Computer Tyme * MarxMenu * Users Manual                 Page #68
  4349.     -----------------------------------------------------------------
  4350.     
  4351.      BoxHeader (string)     BoxHeader (string)     BoxHeader (string)
  4352.     
  4353.     Sets the center header message for the next box displayed. This command
  4354.     is used before the DrawBox command.
  4355.     
  4356.      Example:
  4357.         BoxHeader ' Main Choices '
  4358.         DrawBox (25,6,30,9)
  4359.     
  4360.     See Also: BoxHeaderLeft BoxHeaderRight
  4361.     See Also: BoxFooter BoxFooterLeft BoxFooterRight
  4362.     
  4363.     Category: Display
  4364.     
  4365.     
  4366.      BoxHeaderColor (forecolor,backcolor)     BoxHeaderColor (forecolor,backcolor)     BoxHeaderColor (forecolor,backcolor)
  4367.     
  4368.     Sets colors for the box headers and box footers.
  4369.     
  4370.      Example:
  4371.        BoxHeaderColor Yellow Mag
  4372.     
  4373.     Category: Color
  4374.     
  4375.     
  4376.      BoxHeaderLeft (string)     BoxHeaderLeft (string)     BoxHeaderLeft (string)
  4377.     
  4378.     Sets the left header message for the next box displayed. This command is
  4379.     used before the DrawBox command.
  4380.     
  4381.      Example:
  4382.         BoxHeaderLeft ' Main Choices '
  4383.         DrawBox (25,6,30,9)
  4384.     
  4385.     See Also: BoxHeader BoxHeaderRight
  4386.     See Also: BoxFooter BoxFooterLeft BoxFooterRight
  4387.     
  4388.     Category: Display
  4389.     
  4390.     
  4391.      BoxHeaderRight (string)     BoxHeaderRight (string)     BoxHeaderRight (string)
  4392.     
  4393.     Sets the right header message for the next box displayed. This command
  4394.     is used before the DrawBox command.
  4395.     
  4396.      Example:
  4397.         BoxHeaderRight ' Main Choices '
  4398.         DrawBox (25,6,30,9)
  4399.     
  4400.     See Also: BoxHeader BoxHeaderLeft
  4401.     See Also: BoxFooter BoxFooterLeft BoxFooterRight
  4402.     
  4403.  
  4404.     Computer Tyme * MarxMenu * Users Manual                 Page #69
  4405.     -----------------------------------------------------------------
  4406.     
  4407.     Category: Display
  4408.     
  4409.     
  4410.      BoxFooter (string)     BoxFooter (string)     BoxFooter (string)
  4411.     
  4412.     Sets the center footer message for the next box displayed. This command
  4413.     is used before the DrawBox command.
  4414.     
  4415.      Example:
  4416.         BoxFooter ' Main Choices '
  4417.         DrawBox (25,6,30,9)
  4418.     
  4419.     See Also: BoxHeader BoxHeaderLeft BoxHeaderRight
  4420.     See Also: BoxFooterLeft BoxFooterRight
  4421.     
  4422.     Category: Display
  4423.     
  4424.     
  4425.      BoxFooterLeft (string)     BoxFooterLeft (string)     BoxFooterLeft (string)
  4426.     
  4427.     Sets the left footer message for the next box displayed. This command is
  4428.     used before the DrawBox command.
  4429.     
  4430.      Example:
  4431.         BoxFooterLeft ' Main Choices '
  4432.         DrawBox (25,6,30,9)
  4433.     
  4434.     See Also: BoxHeader BoxHeaderLeft BoxHeaderRight
  4435.     See Also: BoxFooter BoxFooterRight
  4436.     
  4437.     Category: Display
  4438.     
  4439.     
  4440.      BoxFooterRight (string)     BoxFooterRight (string)     BoxFooterRight (string)
  4441.     
  4442.     Sets the right footer message for the next box displayed. This command
  4443.     is used before the DrawBox command.
  4444.     
  4445.      Example:
  4446.         BoxFooterRight ' Main Choices '
  4447.         DrawBox (25,6,30,9)
  4448.     
  4449.     See Also: BoxHeader BoxHeaderLeft BoxHeaderRight
  4450.     See Also: BoxFooter BoxFooterLeft
  4451.     
  4452.     Category: Display
  4453.     
  4454.  
  4455.     Computer Tyme * MarxMenu * Users Manual                 Page #70
  4456.     -----------------------------------------------------------------
  4457.     
  4458.      BoxInsideColor (forecolor,backcolor)     BoxInsideColor (forecolor,backcolor)     BoxInsideColor (forecolor,backcolor)
  4459.     
  4460.     Sets colors for box interior.
  4461.     
  4462.      Example:
  4463.        BoxInsideColor Grey Blue
  4464.     
  4465.     Category: Color
  4466.     
  4467.     
  4468.      Break (On/Off)     Break (On/Off)     Break (On/Off)
  4469.     
  4470.     Turns break checking on and off the same way that it does from batch
  4471.     files.
  4472.     
  4473.     Category: System
  4474.     
  4475.     
  4476.      BrightBackground (On/Off)     BrightBackground (On/Off)     BrightBackground (On/Off)
  4477.     
  4478.     This command switches between bright background modes and blink modes.
  4479.     
  4480.     I made a most amazing discovery. I found out that there was a way to
  4481.     convert the blink bit to do high intensity background instead. This
  4482.     doubles the number of colors that MarxMenu can produce.
  4483.     
  4484.     This command affects the video controller directly. Thus, it may not
  4485.     work on all computers especially if you are running something weird.
  4486.     
  4487.     Once this is set in MarxMenu it stays set. So if you run another program
  4488.     that has blink in it, it will use 16 background colors instead. The
  4489.     solution is to set BrightBackground Off right before you run a program
  4490.     that requires blinking.
  4491.     
  4492.      Example:
  4493.        OnKey 'X'
  4494.          |BrightBackground Off
  4495.          PROCOMM
  4496.     
  4497.     Warning! This program uses a trick that may not be compatible with some
  4498.     TSR programs. If you can get away with it, fine. But, if you have
  4499.     problems where TSR's cause your screen to blink, then don't use this
  4500.     command.
  4501.     
  4502.     Category: Display
  4503.     
  4504.  
  4505.     Computer Tyme * MarxMenu * Users Manual                 Page #71
  4506.     -----------------------------------------------------------------
  4507.     
  4508.      BuildPath (Array)     BuildPath (Array)     BuildPath (Array)
  4509.     
  4510.     BuildPath sets the PATH environment variable to the driectories listed
  4511.     in the Array variable. The first element in the array becomes the first
  4512.     search path.
  4513.     
  4514.      Example:
  4515.        Var P
  4516.        P[1] = 'F:\PUBLIC'
  4517.        P[2] = 'F:\DOS'
  4518.        P[3] = 'F:\UTIL'
  4519.        BuildPath (P)    ;sets PATH=F:\PUBLIC;F:\DOS;F:\UTIL
  4520.     
  4521.     See Also: SplitPath FixPath
  4522.     
  4523.     Category: String Array Environment
  4524.     
  4525.     
  4526.      CancelListEntry (Local Name)     CancelListEntry (Local Name)     CancelListEntry (Local Name)
  4527.     
  4528.     This will take an entry out of the network redirection list for either a
  4529.     print redirection or disk drive redirection.
  4530.     
  4531.      Example:
  4532.        CancelListEntry 'P:'    ;cancels network drive mapping
  4533.        CancelListEntry 'LPT1'  ;cancels printer redirection
  4534.     
  4535.     See Also: AssignList MakeListEntry
  4536.     
  4537.     Category: Novell MSNet Vines
  4538.     
  4539.     
  4540.      CapsColor (forecolor,backcolor)     CapsColor (forecolor,backcolor)     CapsColor (forecolor,backcolor)
  4541.     
  4542.     Setting CapsColor allows capital letters and numbers to be a different
  4543.     color than the rest of the text. This is used with the UseArrows command
  4544.     to show which character is the one that selects the options in the
  4545.     window. CapsColor is reset after any TextColor command, so be sure to
  4546.     use CapsColor AFTER TextColor commands.
  4547.     
  4548.     For this option the numbers 0 - 9 and some punctuation characters are
  4549.     considered capitals.
  4550.     
  4551.      Example:
  4552.        CapsColor White Blue
  4553.     
  4554.     See Also: DrawBox
  4555.     
  4556.     Category: Color
  4557.     
  4558.  
  4559.     Computer Tyme * MarxMenu * Users Manual                 Page #72
  4560.     -----------------------------------------------------------------
  4561.     
  4562.      CapsLock : Boolean     CapsLock : Boolean     CapsLock : Boolean
  4563.     
  4564.     Returns true if Caps Lock is on. This command can also set the Caps Lock
  4565.     on and off.
  4566.     
  4567.      Example:
  4568.        if CapsLock then Write 'CapsLock is On'
  4569.     
  4570.        CapsLock On  ;Turns CapsLock On
  4571.        CapsLock Off ;Turns CapsLock Off
  4572.     
  4573.        CapsLock (by itself) turns CapsLock On.
  4574.     
  4575.        To test for CapsLock:
  4576.        if CapsLock
  4577.           <do something>
  4578.        endif
  4579.     
  4580.     See Also: ScrollLock NumLock
  4581.     
  4582.     Category: System
  4583.     
  4584.     
  4585.      Chain (MenuName)     Chain (MenuName)     Chain (MenuName)
  4586.     
  4587.     This command will load a new menu. Unlike Jump, MarxMenu stays in
  4588.     memory. The screen is not cleared. If the new menu has exactly the same
  4589.     global variables, the contents of all global variables is retained.
  4590.     Chain allows for a very quick transfer from one menu to another.
  4591.     
  4592.      Example:
  4593.        OnKey 'P'
  4594.          |Chain ('USER')  ;Chains to USER.MNU
  4595.     
  4596.     Category: Execution
  4597.     
  4598.     
  4599.      Char (number) : String     Char (number) : String     Char (number) : String
  4600.     
  4601.     Converts a number into a one character string.
  4602.     
  4603.      Example:
  4604.        Write (Char(65)) ;This will display 'A'
  4605.     
  4606.     Category: String
  4607.     
  4608.  
  4609.     Computer Tyme * MarxMenu * Users Manual                 Page #73
  4610.     -----------------------------------------------------------------
  4611.     
  4612.      ChDir (string)     ChDir (string)     ChDir (string)
  4613.     
  4614.     Changes directories. The variable FileResult can be tested to see if it
  4615.     was successful. ChDir can also be used to change drives.
  4616.     
  4617.      Example:
  4618.        ChDir( 'C:\HOME\MARXMENU' )
  4619.        ChDir( 'B:' )                ; Will make drive B: the current drive
  4620.     
  4621.     Category: File
  4622.     
  4623.     
  4624.      CleanFileName (string) : String     CleanFileName (string) : String     CleanFileName (string) : String
  4625.     
  4626.     Returns the full path name or directory name of a string. It also
  4627.     removes occurrences of a '\\' in the string if they aren't at the
  4628.     beginning of the string.
  4629.     
  4630.      Thus the command:
  4631.         CleanFileName('a:\' + '\main.mnu') returns 'A:\MAIN.MNU'.
  4632.     
  4633.     CleanFileName also removes extra ending '\' and capitalizes the path.
  4634.     
  4635.     See Also: TrueName
  4636.     
  4637.     Category: String
  4638.     
  4639.     
  4640.      ClearLine [char]     ClearLine [char]     ClearLine [char]
  4641.     
  4642.     Clears the current line in the current window. The optional parameter is
  4643.     for the decimal number of the IBM graphics character. If [char] is
  4644.     present, the line will be filled with the character.
  4645.     
  4646.      Examples:
  4647.         ClearLine       ;Clears screen with blanks
  4648.         ClearLine 205   ;Clears screen with char 205
  4649.     
  4650.     Category: Display Ansi
  4651.     
  4652.     
  4653.      ClearScreen [char]     ClearScreen [char]     ClearScreen [char]
  4654.     
  4655.     Clears the screen. The optional parameter is the decimal number
  4656.     equivalent for an IBM graphics character. If [char] is present, the
  4657.     screen will be filled with [char].
  4658.     
  4659.      Examples:
  4660.         ClearScreen       ;Clears screen with blanks
  4661.         ClearScreen 177   ;Clears screen with char 177
  4662.     
  4663.  
  4664.     Computer Tyme * MarxMenu * Users Manual                 Page #74
  4665.     -----------------------------------------------------------------
  4666.     
  4667.     Category: Display Ansi
  4668.     
  4669.     
  4670.      ClearScreenFirst (on/off)     ClearScreenFirst (on/off)     ClearScreenFirst (on/off)
  4671.     
  4672.     Used in conjunction with Execute. If on, will clear the screen before
  4673.     running the program.
  4674.     
  4675.      Example:
  4676.        OnKey 'D'
  4677.          |ClearScreenFirst On
  4678.          |Execute 'C:\DM.COM'
  4679.     
  4680.     The default is ON.
  4681.     
  4682.     See Also: Execute
  4683.     
  4684.     Category: Execution
  4685.     
  4686.     
  4687.      ClearScreenOnExit (on/off)     ClearScreenOnExit (on/off)     ClearScreenOnExit (on/off)
  4688.     
  4689.     Controls whether or not the screen is cleared on menu exit. Default on.
  4690.     
  4691.     See Also: Execute
  4692.     
  4693.     Category: Display
  4694.     
  4695.     
  4696.      ClockColor (forecolor,backcolor)     ClockColor (forecolor,backcolor)     ClockColor (forecolor,backcolor)
  4697.     
  4698.     Sets colors for the on screen clock.
  4699.     
  4700.      Example:
  4701.        ClockColor Yellow Brown
  4702.     
  4703.     Category: Color
  4704.     
  4705.     
  4706.      ClockMode     ClockMode     ClockMode
  4707.     
  4708.     ClockMode is a variable whose bits control the format of the on screen
  4709.     clock when it is used.
  4710.     
  4711.      ClockMode Bits:
  4712.      ---------------
  4713.      0 24 hour mode
  4714.      1 AmPm On
  4715.      2 Show Seconds
  4716.      3 UpperCase
  4717.      4 3 char month
  4718.      5 3 char Day of Week
  4719.      6 Show Day of Week
  4720.      7 Dash = 0 Slash = 1 MM-DD-YY or MM/DD/YY
  4721.      8 Long Date
  4722.     
  4723.  
  4724.     Computer Tyme * MarxMenu * Users Manual                 Page #75
  4725.     -----------------------------------------------------------------
  4726.     
  4727.      Bit 0 on sets hours display to 24 hour mode.
  4728.      Bit 1 turns on the Am/Pm display.
  4729.      Bit 2 on controls if time is shown as HH:MM:SS or just HH:MM.
  4730.      Bit 3 shows date in only upper case.
  4731.      Bit 4 on shows month in 3 characters.
  4732.      Bit 5 shows Day of week as 3 characters.
  4733.      Bit 6 controls if Day of week is displayed.
  4734.      Bit 7 controls if date is shown as MM-DD-YY or MM/DD/YY.
  4735.      Bit 8 shows date in text. (October 3, 1990).
  4736.     
  4737.     The default ClockMode is 326.
  4738.     
  4739.     Category: Display
  4740.     
  4741.     
  4742.      ClockPos (column,row)     ClockPos (column,row)     ClockPos (column,row)
  4743.     
  4744.     Puts a clock on the screen at location (column,row). The command
  4745.     ClockPos 0 0 turns the clock off.
  4746.     
  4747.      Example:
  4748.        ClockPos 7 2
  4749.     
  4750.     Category: Display
  4751.     
  4752.     
  4753.      ClosePrinter     ClosePrinter     ClosePrinter
  4754.     
  4755.     In MarxMenu the printer is just another text file. Closing the printer
  4756.     is not required for ordinary printing. If you are changing printers you
  4757.     need to run ClosePrinter before changing the printer name. The printer
  4758.     is automatically opened by MarxMenu any time you print anything.
  4759.     
  4760.     If you are running Windows or DesqView, closing the printer allows other
  4761.     programs to access the printer. So if you are running under any
  4762.     multitasking shell, be sure to close the printer when you are done with
  4763.     it.
  4764.     
  4765.     If you are using a network like Novell, ClosePrinter will end the print
  4766.     job and send it to the print queue. This avoids the need to wait for
  4767.     print capture timouts to take effect.
  4768.     
  4769.     Closing the printer is good programming practice and will help you stay
  4770.     out of trouble. It's like what your mother taught you. "When you're done
  4771.     with something, put it away."
  4772.     
  4773.     See Also: OpenPrinter PrinterName
  4774.     
  4775.     Category: Printer
  4776.     
  4777.  
  4778.     Computer Tyme * MarxMenu * Users Manual                 Page #76
  4779.     -----------------------------------------------------------------
  4780.     
  4781.      ClusterSize <drive> : Number     ClusterSize <drive> : Number     ClusterSize <drive> : Number
  4782.     
  4783.     Returns cluster size in bytes.
  4784.     
  4785.      Example:
  4786.         Writeln (ClusterSize 'C')
  4787.     
  4788.     ClusterSize only looks at the first character of the string for the
  4789.     drive letter.
  4790.     
  4791.      Example:
  4792.         ClusterSize (Path)  ;returns clustersize of current drive.
  4793.     
  4794.     Category: System
  4795.     
  4796.     
  4797.      CmdLine : String     CmdLine : String     CmdLine : String
  4798.     
  4799.     System string variable that returns the rest of the command line after
  4800.     the menu name.
  4801.     
  4802.      Example:
  4803.        if you run MARXMENU GOFILE *.BAT then CmdLine returns GOFILE *.BAT
  4804.     
  4805.     Category: String
  4806.     
  4807.     
  4808.      ColdBoot     ColdBoot     ColdBoot
  4809.     
  4810.     Causes a cold reboot of the computer.
  4811.     
  4812.     See Also: Reboot
  4813.     
  4814.     Category: Execution
  4815.     
  4816.     
  4817.      ColorScreen : Boolean     ColorScreen : Boolean     ColorScreen : Boolean
  4818.     
  4819.     Returns true if screen is a color screen. Note: Running MODE BW80 will
  4820.     cause ColorScreen to return false.
  4821.     
  4822.      Example:
  4823.        If ColorScreen
  4824.            ;Color
  4825.          TextColor( White, Blue )
  4826.        Else
  4827.            ;Monochrome
  4828.          TextColor( White, Black )
  4829.        EndIf
  4830.     
  4831.     Category: Display
  4832.     
  4833.  
  4834.     Computer Tyme * MarxMenu * Users Manual                 Page #77
  4835.     -----------------------------------------------------------------
  4836.     
  4837.      Comment     Comment     Comment
  4838.     
  4839.     Starts a Comment Block. All text is ignored until EndComment is
  4840.     encountered.
  4841.     
  4842.      Example:
  4843.        Comment
  4844.        =======================================
  4845.     
  4846.        Everything between Comment and EndComment is ignored.
  4847.     
  4848.        =======================================
  4849.        EndComment
  4850.     
  4851.     See Also: EndComment
  4852.     
  4853.     Category: Misc
  4854.     
  4855.     
  4856.      Console (On/Off)     Console (On/Off)     Console (On/Off)
  4857.     
  4858.     The command Console Off will disable access to the console.
  4859.     
  4860.     Category: Display
  4861.     
  4862.     
  4863.      ConsoleBorderColor (Color,Color)     ConsoleBorderColor (Color,Color)     ConsoleBorderColor (Color,Color)
  4864.     
  4865.     Sets the color of the console border.
  4866.     
  4867.      Example:
  4868.     See Also: ConsolePos
  4869.     
  4870.     Category: Color
  4871.     
  4872.     
  4873.      ConsoleHeaderColor (Color,Color)     ConsoleHeaderColor (Color,Color)     ConsoleHeaderColor (Color,Color)
  4874.     
  4875.     Sets the color of the console header.
  4876.     
  4877.     See Also: ConsolePos
  4878.     
  4879.     Category: Color
  4880.     
  4881.     
  4882.      ConsoleInsideColor (Color,Color)     ConsoleInsideColor (Color,Color)     ConsoleInsideColor (Color,Color)
  4883.     
  4884.     Sets the color of the console inside.
  4885.     
  4886.     See Also: ConsolePos
  4887.     
  4888.     Category: Color
  4889.     
  4890.  
  4891.     Computer Tyme * MarxMenu * Users Manual                 Page #78
  4892.     -----------------------------------------------------------------
  4893.     
  4894.      ConsolePos (column,row)     ConsolePos (column,row)     ConsolePos (column,row)
  4895.     
  4896.     Sets the coordinates of the pop-up console menu.
  4897.     
  4898.      Example:
  4899.        ConsoleBorderColor( White,Blue )
  4900.        ConsoleHeaderColor( Yellow,Blue )
  4901.        ConsoleInsideColor( Yellow,Blue )
  4902.        ConsolePos( 5,5 ) ; Column 5, Row 5
  4903.     
  4904.     Category: Display
  4905.     
  4906.     
  4907.      Const     Const     Const
  4908.     
  4909.     Creates a constant.
  4910.     
  4911.      Example:
  4912.        Const
  4913.          X = 50
  4914.          St = 'MARXMENU'
  4915.          Flag = True
  4916.     
  4917.     See Also: Var Shared Qualifier
  4918.     
  4919.     Category Variable
  4920.     
  4921.     
  4922.      Cos (Radians) : Real     Cos (Radians) : Real     Cos (Radians) : Real
  4923.     
  4924.     Returns the CoSine of a real.
  4925.     
  4926.     Category: Math Float
  4927.     
  4928.     
  4929.      CpuClass : Number     CpuClass : Number     CpuClass : Number
  4930.     
  4931.     Reads the type of CPU you are using and returns a number.
  4932.     
  4933.      1 - 8088, 8086, 80186, V20, V30
  4934.      2 - 80286
  4935.      3 - 80386
  4936.      4 - 80486
  4937.     
  4938.     Category: System
  4939.     
  4940.  
  4941.     Computer Tyme * MarxMenu * Users Manual                 Page #79
  4942.     -----------------------------------------------------------------
  4943.     
  4944.      CountryCode : Number     CountryCode : Number     CountryCode : Number
  4945.     
  4946.     Returns the international country code from DOS. The country code is the
  4947.     same number as the international telephone dialing code prefix.
  4948.     
  4949.     Category: International
  4950.     
  4951.     
  4952.      CurrentEnvironment     CurrentEnvironment     CurrentEnvironment
  4953.     
  4954.     CurrentEnvironment selects the current environment for use with
  4955.     environment access commands.
  4956.     
  4957.     See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  4958.     See Also: ParentEnvironment MasterEnvironment
  4959.     
  4960.     Category: Environment
  4961.     
  4962.     
  4963.      CurrentWindow : Number     CurrentWindow : Number     CurrentWindow : Number
  4964.     
  4965.     Returns the number of the current window. All windows are given a unique
  4966.     number.
  4967.     
  4968.      Example:
  4969.        ThisWindow = CurrentWindow
  4970.     
  4971.     See Also: SetTopWindow
  4972.     
  4973.     Category: Display
  4974.     
  4975.     
  4976.      Cursor (On/Off)     Cursor (On/Off)     Cursor (On/Off)
  4977.     
  4978.     MarxMenu automatically turns the cursor on for certain kinds of input.
  4979.     Using Cursor Off prevents MarxMenu from turning the cursor on. Cursor On
  4980.     reverses this and allows MarxMenu to turn the cursor on when needed.
  4981.     
  4982.      Example:
  4983.        Cursor Off
  4984.     
  4985.     Category: Display
  4986.     
  4987.     
  4988.      CustomBox (String)     CustomBox (String)     CustomBox (String)
  4989.     
  4990.     Selects a Box border using an 8 character string to define the sides and
  4991.     the corners.
  4992.     
  4993.      Example:
  4994.        CustomBox ('12345678') ;This will help you figure out what
  4995.                               ;position matches which side.
  4996.     
  4997.  
  4998.     Computer Tyme * MarxMenu * Users Manual                 Page #80
  4999.     -----------------------------------------------------------------
  5000.     
  5001.     See Also: SingleLineBox DoubleLineBox BlockBox NoBoxBorder
  5002.     
  5003.     Category: Display
  5004.     
  5005.     
  5006.      DateSeparator : String     DateSeparator : String     DateSeparator : String
  5007.     
  5008.     Returns the date separator character from the country information.
  5009.     
  5010.     See Also: TimeSeparator DecimalSeparator CountryCode
  5011.     
  5012.     Category: International Time
  5013.     
  5014.     
  5015.      DateString (Time) : String     DateString (Time) : String     DateString (Time) : String
  5016.     
  5017.     Returns the date of a time value as text. If no parameter is passed then
  5018.     Now is assumed. Uses international date format rules.
  5019.     
  5020.      Example:
  5021.        Writeln DateString            ;returns the date of Now as text
  5022.        Writeln DateString (Tomorrow) ;returns the date of Tomorrow as text
  5023.     
  5024.     Category: Time String International
  5025.     
  5026.     
  5027.      Day : Number     Day : Number     Day : Number
  5028.     
  5029.     Returns the day of the month.
  5030.     
  5031.     Category: Time
  5032.     
  5033.     
  5034.      DayOf (Date) : Number     DayOf (Date) : Number     DayOf (Date) : Number
  5035.     
  5036.     Returns the day of a date. If Date is passed as a string it is
  5037.     converted automatically.
  5038.     
  5039.      Example:
  5040.        DayOf('April 22, 1992')  ;returns 22
  5041.     
  5042.     See Also: TimeOf BadDate
  5043.     
  5044.     Category: Time
  5045.     
  5046.     
  5047.      DayOfWeek : Number     DayOfWeek : Number     DayOfWeek : Number
  5048.     
  5049.     Returns the day of the week.
  5050.     
  5051.       0=SUNDAY
  5052.       1=MONDAY
  5053.       2=TUESDAY
  5054.       3=WEDNESDAY
  5055.       4=THURSDAY
  5056.       5=FRIDAY
  5057.       6=SATURDAY
  5058.     
  5059.  
  5060.     Computer Tyme * MarxMenu * Users Manual                 Page #81
  5061.     -----------------------------------------------------------------
  5062.     
  5063.     Category: Time
  5064.     
  5065.     
  5066.      DayOfWeekOf (Date) : Number     DayOfWeekOf (Date) : Number     DayOfWeekOf (Date) : Number
  5067.     
  5068.     Returns the DayOfWeek of a date. If Date is passed as a string it is
  5069.     converted automatically.
  5070.     
  5071.      Example:
  5072.        DayOfWeekOf('April 22, 1992')  ;returns 4
  5073.     
  5074.     See Also: TimeOf BadDate
  5075.     
  5076.     Category: Time
  5077.     
  5078.     
  5079.      DecimalSeparator : String     DecimalSeparator : String     DecimalSeparator : String
  5080.     
  5081.     Returns the decimal separator character from the country information.
  5082.     
  5083.     See Also: TimeSeparator DateSeparator CountryCode
  5084.     
  5085.     Category: International
  5086.     
  5087.     
  5088.      Delete (string,pos,count)     Delete (string,pos,count)     Delete (string,pos,count)
  5089.     
  5090.     Deletes characters from string starting at pos for count.
  5091.     
  5092.      Example:
  5093.        String = 'ABCDEFGH'
  5094.        Delete(String,2,3)
  5095.     
  5096.     This leaves a String containing 'ABFGH'
  5097.     
  5098.     If count exceeds the length of the string, the string is truncated at
  5099.     pos.
  5100.     
  5101.     Another use of Delete is to delete elements of an array.
  5102.     
  5103.     Delete (Array,Position,Count)
  5104.     This works exactly like the delete command for strings. It delete
  5105.     elements of an array beginning at Position for Count elements. The
  5106.     NumberOfElements is adjusted accordingly.
  5107.     
  5108.      Example:
  5109.        MyArray[1] = "ONE"
  5110.        MyArray[2] = "TWO"
  5111.        MyArray[3] = "THREE"
  5112.        MyArray[4] = "FOUR"
  5113.        Delete( MyArray,2,2 )
  5114.     
  5115.  
  5116.     Computer Tyme * MarxMenu * Users Manual                 Page #82
  5117.     -----------------------------------------------------------------
  5118.     
  5119.      ;MyArray now contains..
  5120.        MyArray[1] = "ONE"
  5121.        MyArray[2] = "FOUR"
  5122.     
  5123.     Category: String Array
  5124.     
  5125.     
  5126.      DelFile (Name)     DelFile (Name)     DelFile (Name)
  5127.     
  5128.     Deletes a file by name. FileResult returns a 0 if the file existed and
  5129.     the delete was successful.
  5130.     
  5131.      Example:
  5132.        DelFile( 'C:\NOTES\READ.ME' )
  5133.        If FileResult = 0
  5134.          Writeln('C:\NOTES\READ.ME was succesfully deleted!')
  5135.        Else
  5136.          Writeln('C:\NOTES\READ.ME was un-succesfully deleted!')
  5137.        EndIf
  5138.     
  5139.     Category: File
  5140.     
  5141.     
  5142.      DisplayType : Number     DisplayType : Number     DisplayType : Number
  5143.     
  5144.     Returns the current video card type.
  5145.     
  5146.      0 = HercMono
  5147.      1 = CGA
  5148.      2 = MCGA
  5149.      3 = EGA
  5150.      4 = VGA
  5151.      5 = PGC
  5152.     
  5153.     MarxMenu also understands the above constant names. For example, if you
  5154.     want to test for a CGA card:
  5155.     
  5156.      if DisplayType = CGA then ....
  5157.     
  5158.     Category: Display
  5159.     
  5160.     
  5161.      DirectoriesOnly (On/Off)     DirectoriesOnly (On/Off)     DirectoriesOnly (On/Off)
  5162.     
  5163.     Forces ReadDirectory to read directories instead of file names.
  5164.     
  5165.     See Also: ReadDirectory
  5166.     
  5167.     Category: File
  5168.     
  5169.  
  5170.     Computer Tyme * MarxMenu * Users Manual                 Page #83
  5171.     -----------------------------------------------------------------
  5172.     
  5173.      Dispose (Variable)     Dispose (Variable)     Dispose (Variable)
  5174.     
  5175.     This command reclaims memory used by a string variable, file variable,
  5176.     or an array. If you are doing a lot of data manipulation, you might want
  5177.     to reclaim memory space used by arrays you are done with. The disposed
  5178.     variable becomes an untyped variable.
  5179.     
  5180.      Example:
  5181.        Loop( 20 )
  5182.          MyArray[LoopIndex] = LoopIndex
  5183.     
  5184.          ;Check to See Also: if number is odd or even
  5185.          If (MyArray[LoopIndex] Mod 2) = 0
  5186.            Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
  5187.          Else
  5188.            Writeln('MyArray[' + Str(LoopIndex) + '] is an EVEN number.' );
  5189.          EndIf
  5190.        EndLoop
  5191.     
  5192.        ;We're finished with the array so reclaim its memory space.
  5193.        Dispose(MyArray)
  5194.     
  5195.     Category: Memory Array
  5196.     
  5197.     
  5198.      DosVersion : Number     DosVersion : Number     DosVersion : Number
  5199.     
  5200.     Returns the major DOS version number.
  5201.     
  5202.     See Also: DosVersionString MinorDosVersion
  5203.     
  5204.     Category: System
  5205.     
  5206.     
  5207.      DosVersionString : String     DosVersionString : String     DosVersionString : String
  5208.     
  5209.     Returns the DOS version number as a 4 character string. This function
  5210.     always returns 2 places past the decimal point. The form of the string
  5211.     is: #.##
  5212.     
  5213.      Example
  5214.         Writeln DosVersionString   ;prints 4.01
  5215.     
  5216.     See Also: DosVersion MinorDosVersion
  5217.     
  5218.     Category: System String
  5219.     
  5220.  
  5221.     Computer Tyme * MarxMenu * Users Manual                 Page #84
  5222.     -----------------------------------------------------------------
  5223.     
  5224.      DosWindow (on/off)     DosWindow (on/off)     DosWindow (on/off)
  5225.     
  5226.     When you set DosWindow on, MarxMenu will not drop out of the menu system
  5227.     when you use the Execute command. It will give you a display of the DOS
  5228.     screen within the current window. The program you execute must be a
  5229.     well-behaved program like DIR or COPY or some of the other DOS commands
  5230.     that talk to the screen through standard file handles.
  5231.     
  5232.     See Also: Execute
  5233.     
  5234.     Category: Execution
  5235.     
  5236.     
  5237.      DoubleLineBox     DoubleLineBox     DoubleLineBox
  5238.     
  5239.     Selects double line box.
  5240.     
  5241.     See Also: SingleLineBox BlockBox CustomBox NoBoxBorder
  5242.     
  5243.     Category: Display
  5244.     
  5245.     
  5246.      DrawBox (column,row,width,height)     DrawBox (column,row,width,height)     DrawBox (column,row,width,height)
  5247.     
  5248.     Draws a box on the screen. The (column) and (row) are the upper left
  5249.     corner, (width) and (height) is the box size.
  5250.     
  5251.      Example:
  5252.        Explode On
  5253.        Shadow On
  5254.        DoubleLineBox
  5255.        BoxHeaderColor( Yellow,Red )
  5256.        BoxBorderColor( White, Red )
  5257.        BoxInsideColor( Yellow,Red )
  5258.        InverseColor( Black, Gray )
  5259.        CapsColor( Black, Red )
  5260.        BoxHeader = ' << Main Menu >> '
  5261.        DrawBox( 30,10,40,8 )
  5262.     
  5263.     DrawBox also creates a logical layer for several display variables.
  5264.     These variable include TextColor, InverseColor, CapsColor. It is
  5265.     important to use these color control commands AFTER the DrawBox command
  5266.     in order to properly restore the colors of the previous DrawBox.
  5267.     
  5268.     If you call up a box and when it finishes it messes up the colors of the
  5269.     previous box, you probably used color control commands BEFORE the
  5270.     DrawBox instead of AFTER.
  5271.     
  5272.     Category: Display
  5273.     
  5274.  
  5275.     Computer Tyme * MarxMenu * Users Manual                 Page #85
  5276.     -----------------------------------------------------------------
  5277.     
  5278.      Drives : Number     Drives : Number     Drives : Number
  5279.     
  5280.     Returns the number of drives. This includes drive names that can be
  5281.     substituted. Most of the time the answer is 5. This relates to your
  5282.     LastDrive = command in your CONFIG.SYS file.
  5283.     
  5284.     Category: System
  5285.     
  5286.     
  5287.      DvAppNumber : Number     DvAppNumber : Number     DvAppNumber : Number
  5288.     
  5289.     Returns the DesqView application number or DesqView window number.
  5290.     
  5291.     Category: DesqView
  5292.     
  5293.     
  5294.      DvFrame (Handle,On/Off)     DvFrame (Handle,On/Off)     DvFrame (Handle,On/Off)
  5295.     
  5296.     Turns the DesqView border frame on or off for a particular task
  5297.     identified by Handle.
  5298.     
  5299.     Category: DesqView
  5300.     
  5301.     
  5302.      DvFreeze (Handle)     DvFreeze (Handle)     DvFreeze (Handle)
  5303.     
  5304.     Freezes a program. The program stops executing.
  5305.     
  5306.     See Also: DvUnFreeze DvPifExecute DvLastHandle
  5307.     
  5308.     Category: DesqView
  5309.     
  5310.     
  5311.      DvHide (Handle)     DvHide (Handle)     DvHide (Handle)
  5312.     
  5313.     Hides all output from program making it invisible. The program still
  5314.     continues to run.
  5315.     
  5316.     See Also: DvUnHide
  5317.     
  5318.     Category: DesqView
  5319.     
  5320.     
  5321.      DvKillTask (Handle)     DvKillTask (Handle)     DvKillTask (Handle)
  5322.     
  5323.     Kills a program running under DesqView. The handle is the one returned
  5324.     be DvPifExecute in DvLastHandle.
  5325.     
  5326.     See Also: DvPifExecute
  5327.     
  5328.     Category: DesqView
  5329.     
  5330.  
  5331.     Computer Tyme * MarxMenu * Users Manual                 Page #86
  5332.     -----------------------------------------------------------------
  5333.     
  5334.      DvLastHandle : Number     DvLastHandle : Number     DvLastHandle : Number
  5335.     
  5336.     Returns a number that is associated with a program running under
  5337.     DesqView. This number is used to control other programs running under
  5338.     DesqView. It is set by DvPifExecute.
  5339.     
  5340.     See Also: DvPifExecute
  5341.     
  5342.     Category: DesqView
  5343.     
  5344.     
  5345.      DvLoaded : Boolean     DvLoaded : Boolean     DvLoaded : Boolean
  5346.     
  5347.     Returns true if DesqView is loaded.
  5348.     
  5349.     Category: DesqView
  5350.     
  5351.     
  5352.      DvMoveWindow (Handle,X,Y)     DvMoveWindow (Handle,X,Y)     DvMoveWindow (Handle,X,Y)
  5353.     
  5354.     Moves DesqView window upper left corner to position X,Y.
  5355.     
  5356.     Category: DesqView
  5357.     
  5358.     
  5359.      DvMyHandle : Number     DvMyHandle : Number     DvMyHandle : Number
  5360.     
  5361.     Returns the DesqView handle of the current process.
  5362.     
  5363.     See Also: DvLastHandle
  5364.     
  5365.     Category: DesqView
  5366.     
  5367.     
  5368.      DvPifExecute (Pif File)     DvPifExecute (Pif File)     DvPifExecute (Pif File)
  5369.     
  5370.     Executes another program under DesqView in another window. MarxMenu
  5371.     stays resident in its original window. The window executes according to
  5372.     the contents of the DesqView PIF file. The PIF file can be specified by
  5373.     using the full name. If you leave off the extension, MarxMenu assumes
  5374.     the extension DVP. If you pass a two character name, like the two
  5375.     characters in the DesqView menus, then MarxMenu will add -PIF.DVP to the
  5376.     name. If the PIF file is on the path, MarxMenu will find it.
  5377.     
  5378.     Warning! DesqView must be loaded to run this command.
  5379.     
  5380.      Example:
  5381.        DvPifExecute 'BD'
  5382.        DvPifExecute 'BD-PIF'       ;These all execute Big DOS
  5383.        DVPifExecute 'BD-PIF.DVP'
  5384.     
  5385.     The task handle is loaded into a variable named DvLastHandle. When the
  5386.     program starts, it becomes the current top program.
  5387.     
  5388.  
  5389.     Computer Tyme * MarxMenu * Users Manual                 Page #87
  5390.     -----------------------------------------------------------------
  5391.     
  5392.     See Also: DvLoaded DvLastHandle
  5393.     
  5394.     Category: DesqView
  5395.     
  5396.     
  5397.      DvResizeWindow (Handle,Width,Height)     DvResizeWindow (Handle,Width,Height)     DvResizeWindow (Handle,Width,Height)
  5398.     
  5399.     Changes the size of a DesqView window.
  5400.     
  5401.     Category: DesqView
  5402.     
  5403.     
  5404.      DvSetBottom (Handle)     DvSetBottom (Handle)     DvSetBottom (Handle)
  5405.     
  5406.     Sets the program associated with the handle to the bottom of the task
  5407.     stack.
  5408.     
  5409.     See Also: DvSetTop
  5410.     
  5411.     Category: DesqView
  5412.     
  5413.     
  5414.      DvSetTop (Handle)     DvSetTop (Handle)     DvSetTop (Handle)
  5415.     
  5416.     Sets the program associated with the handle to be the top running task.
  5417.     Using DvMyHandle allows MarxMenu to regain control after starting
  5418.     another task.
  5419.     
  5420.      Example:
  5421.         DvSetTop (DvMyHandle)
  5422.     
  5423.     See Also: DvSetBottom DvLastHandle
  5424.     
  5425.     Category: DesqView
  5426.     
  5427.     
  5428.      DvUnFreeze (Handle)     DvUnFreeze (Handle)     DvUnFreeze (Handle)
  5429.     
  5430.     UnFreezes a program. The program starts executing again.
  5431.     
  5432.     See Also: DvFreeze DvPifExecute DvLastHandle
  5433.     
  5434.     Category: DesqView
  5435.     
  5436.     
  5437.      DvUnHide (Handle)     DvUnHide (Handle)     DvUnHide (Handle)
  5438.     
  5439.     Reverses the effect of DvHide making program output visible again.
  5440.     
  5441.     See Also: DvHide
  5442.     
  5443.     Category: DesqView
  5444.     
  5445.  
  5446.     Computer Tyme * MarxMenu * Users Manual                 Page #88
  5447.     -----------------------------------------------------------------
  5448.     
  5449.      Else     Else     Else
  5450.     
  5451.     Starts lines executed if a condition is not true.
  5452.     
  5453.      Example:
  5454.        if X = 1
  5455.           Writeln 'One'
  5456.        else
  5457.           Writeln 'Not One'
  5458.        endif
  5459.     
  5460.     See Also: If Then Endif ElseIf
  5461.     
  5462.     Category: Conditional
  5463.     
  5464.     
  5465.      ElseIf     ElseIf     ElseIf
  5466.     
  5467.     Used with IF, ELSE, and ENDIF in conditional statements. After one
  5468.     ElseIf is true, execution continues after the endif statement.
  5469.     
  5470.      Example:
  5471.        if X = 1
  5472.           Writeln 'One'
  5473.     
  5474.        elseif X = 2
  5475.           Writeln 'Two'
  5476.     
  5477.        elseif X = 3
  5478.           Writeln 'Three'
  5479.     
  5480.        elseif X = 4
  5481.           Writeln 'Four'
  5482.     
  5483.        else
  5484.           Writeln 'Other'
  5485.     
  5486.        endif
  5487.     
  5488.     See Also: If Then Endif Else
  5489.     
  5490.     Category: Conditional
  5491.     
  5492.     
  5493.      EndComment     EndComment     EndComment
  5494.     
  5495.     Ends a comment block.
  5496.     
  5497.     See Also: Comment
  5498.     
  5499.  
  5500.     Computer Tyme * MarxMenu * Users Manual                 Page #89
  5501.     -----------------------------------------------------------------
  5502.     
  5503.     Category: Misc
  5504.     
  5505.     
  5506.      EndIf     EndIf     EndIf
  5507.     
  5508.     Ends an if statement.
  5509.     
  5510.     See Also: If Else ElseIf Then
  5511.     
  5512.     Category: Conditional
  5513.     
  5514.     
  5515.      EndLoop     EndLoop     EndLoop
  5516.     
  5517.     Ends a loop statement.
  5518.     
  5519.     See Also: Loop LoopIndex LoopLimit
  5520.     
  5521.     Category: Conditional
  5522.     
  5523.     
  5524.      EndOfFile (FileVar) : Boolean     EndOfFile (FileVar) : Boolean     EndOfFile (FileVar) : Boolean
  5525.     
  5526.     Returns True if you are at the end of the file.
  5527.     
  5528.      Example:
  5529.        Var In
  5530.     
  5531.        FileAssign (In,'C:\NOTES\READ.ME')
  5532.        FileOpen (In)
  5533.        While not EndOfFile (In)
  5534.           Writeln (FileReadLn (In))
  5535.        EndWhile
  5536.        FileClose (In)
  5537.     
  5538.     Category: File
  5539.     
  5540.     
  5541.      EndProc     EndProc     EndProc
  5542.     
  5543.     Ends a Procedure.
  5544.     
  5545.     See Also: Procedure Return
  5546.     
  5547.     Category: Misc
  5548.     
  5549.     
  5550.      EndWhile     EndWhile     EndWhile
  5551.     
  5552.     Ends a While statement.
  5553.     
  5554.     See Also: While
  5555.     
  5556.  
  5557.     Computer Tyme * MarxMenu * Users Manual                 Page #90
  5558.     -----------------------------------------------------------------
  5559.     
  5560.     Category: Conditional
  5561.     
  5562.     
  5563.      EnvFree : Number     EnvFree : Number     EnvFree : Number
  5564.     
  5565.     Returns the free space in the selected environment.
  5566.     
  5567.     See Also: EnvSize
  5568.     
  5569.     Category: Environment
  5570.     
  5571.     
  5572.      EnvSize : Number     EnvSize : Number     EnvSize : Number
  5573.     
  5574.     Returns the size of the selected environment.
  5575.     
  5576.      Example:
  5577.        if EnvSize < 20
  5578.           Writeln ('Your envrionment size is less than 20 bytes!!')
  5579.        endif
  5580.     
  5581.     See Also: EnvFree
  5582.     
  5583.     Category: Environment
  5584.     
  5585.     
  5586.      EraseTopWindow     EraseTopWindow     EraseTopWindow
  5587.     
  5588.     Erases the last window created with DrawBox.
  5589.     
  5590.     See Also: EraseWindow
  5591.     
  5592.     Category: Display
  5593.     
  5594.     
  5595.      EraseWindow (Number)     EraseWindow (Number)     EraseWindow (Number)
  5596.     
  5597.     Erases a window by number. This allows you to erase a window that is not
  5598.     the top window.
  5599.     
  5600.     See Also: CurrentWindow SetTopWindow EraseTopWindow
  5601.     
  5602.     Category: Display
  5603.     
  5604.     
  5605.      Execute (command string)     Execute (command string)     Execute (command string)
  5606.     
  5607.     This allows you to execute a program without dropping out of MarxMenu.
  5608.     MarxMenu remains resident in memory and takes up approximately 50k. No
  5609.     batch file will be created by MarxMenu.
  5610.     
  5611.     This is handy if you have a small program you want to run from the menu
  5612.     but don't want to allow for the time required by MarxMenu to create and
  5613.     run a batch file. You can also execute some programs in a MarxMenu
  5614.     window (See Also: DosWindow). You can also execute a program and examine
  5615.     the return code.
  5616.     
  5617.  
  5618.     Computer Tyme * MarxMenu * Users Manual                 Page #91
  5619.     -----------------------------------------------------------------
  5620.     
  5621.     This command can be placed in a progression of menu commands without any
  5622.     special handling. Under an OnKey statement, you will need use a vertical
  5623.     bar in front of the command.
  5624.     
  5625.      Example:
  5626.        OnKey 'D'
  5627.         |UseCommand Off
  5628.         |Execute 'C:\DM.COM'  ;Note the COM extension is required here.
  5629.     
  5630.     Note: If UseCommand is True or On, MarxMenu will load COMMAND.COM to
  5631.     execute your command. If UseCommand is False, MarxMenu will execute your
  5632.     file directly without COMMAND.COM. Using COMMAND.COM will execute
  5633.     slightly slower, use 3.5k more ram, and allow you to use command lines
  5634.     just like you would from the DOS prompt.
  5635.     
  5636.     If you set UseCommand to off, you will have to include the COM or EXE
  5637.     extension in the name. If you don't include the extension, MarxMenu will
  5638.     automatically override UseCommand and load the command processor. If the
  5639.     command processor is loaded then you won't be able to read the
  5640.     errorlevel return code from the program you are running.
  5641.     
  5642.     COMMAND.COM is required when running internal DOS commands like COPY or
  5643.     DIR. It is also required to run batch files.
  5644.     
  5645.     When UseCommand is off, MarxMenu will search the PATH for the executable
  5646.     file if it isn't in the current directory.
  5647.     
  5648.     Not using COMMAND.COM allows you to use the ReturnCode variable to get
  5649.     the ERRORLEVEL from the subprogram. If COMMAND.COM is loaded, the
  5650.     ERRORLEVEL of the subprogram is lost.
  5651.     
  5652.     The ClearScreenFirst (On/Off) controls whether MarxMenu will clear the
  5653.     screen before you execute.
  5654.     
  5655.     The PauseAfterExecute (On/Off) allows you to have a pause like the Pause
  5656.     command in batch files. That way you can read the screen before it
  5657.     restores the MarxMenu screen. MarxMenu will display "Press any key to
  5658.     return to MarxMenu."
  5659.     
  5660.     Be sure not to load any TSR programs using the Execute command or
  5661.     MarxMenu will lock up.
  5662.     
  5663.     See Also: UseCommand DosWindow PauseAfterExecute ClearScreenFirst
  5664.     
  5665.     Category: Execution
  5666.     
  5667.  
  5668.     Computer Tyme * MarxMenu * Users Manual                 Page #92
  5669.     -----------------------------------------------------------------
  5670.     
  5671.      ExistDir (directory) : Boolean     ExistDir (directory) : Boolean     ExistDir (directory) : Boolean
  5672.     
  5673.     Used to test whether or not a DIRECTORY exists. It can also test to see
  5674.     if a disk is inserted in a floppy drive or if a drive exists.
  5675.     
  5676.      Example:
  5677.        if not ExistDir 'A:' then Writeln 'Insert disk in drive A:'
  5678.     
  5679.     See Also: ExistFile
  5680.     
  5681.     Category: File
  5682.     
  5683.     
  5684.      ExistFile : Boolean     ExistFile : Boolean     ExistFile : Boolean
  5685.     
  5686.     Used to test whether or not a file or device exists.
  5687.     
  5688.      Example:
  5689.        ExistFile 'MARXMENU.EXE'
  5690.        ExistFile 'LPT2'            ;returns true if LPT2 device exists
  5691.     
  5692.     See Also: ExistDir
  5693.     
  5694.     Category: File
  5695.     
  5696.     
  5697.      ExistOnPath (string) : String     ExistOnPath (string) : String     ExistOnPath (string) : String
  5698.     
  5699.     Used to search the existing paths for the command to be executed by
  5700.     Execute or other function.
  5701.     
  5702.      Example:
  5703.        OnKey 'D'
  5704.        |Execute(ExistOnPath('DM.COM'))
  5705.     
  5706.     If the file is not found, a null string is returned.
  5707.     
  5708.     Category: File
  5709.     
  5710.     
  5711.      ExitCode     ExitCode     ExitCode
  5712.     
  5713.     This can be set so MarxMenu will return an ErrorLevel that can be used
  5714.     in a batch file.
  5715.     
  5716.      Example:
  5717.         ExitCode = 100
  5718.     
  5719.     When MarxMenu exits it will use ErrorLevel 100.
  5720.     
  5721.     Category: Execution
  5722.     
  5723.  
  5724.     Computer Tyme * MarxMenu * Users Manual                 Page #93
  5725.     -----------------------------------------------------------------
  5726.     
  5727.      ExitMenu     ExitMenu     ExitMenu
  5728.     
  5729.     Causes MarxMenu to exit. If the Bat command is used or batch commands
  5730.     are used onder an OnKey statement then MarxMenu will create a batch file
  5731.     and set the environment variable MXCMD to point to it. If no batch file
  5732.     is to be created, and MXCMD hasn't been set to any value then the menu
  5733.     system will exit by setting MXCMD to MXSTOP.
  5734.     
  5735.     Category: Execution
  5736.     
  5737.     
  5738.      Exp (Real) : Real     Exp (Real) : Real     Exp (Real) : Real
  5739.     
  5740.     Returns the Exponential of a real. Inverse of Ln.
  5741.     
  5742.     Category: Math Float
  5743.     
  5744.     
  5745.      Explode (on/off)     Explode (on/off)     Explode (on/off)
  5746.     
  5747.     Turn exploding windows on/off.
  5748.     
  5749.     Category: Display
  5750.     
  5751.     
  5752.      ExplodeDelay (number)     ExplodeDelay (number)     ExplodeDelay (number)
  5753.     
  5754.     Sets the speed of exploding windows. Use this command to adjust the
  5755.     speed of the exploding windows. Default is 15.
  5756.     
  5757.     Category: Display
  5758.     
  5759.     
  5760.      Extension (String) : String     Extension (String) : String     Extension (String) : String
  5761.     
  5762.     Returns the Extention of a file name or sets the Extension.
  5763.     
  5764.      Example:
  5765.        Writeln Extension 'MARXMENU.EXE'  ;returns 'EXE'
  5766.     
  5767.      Example:
  5768.        var FileName
  5769.          FileName = TEST.MNU
  5770.          Extension (FileName) = 'MRX'
  5771.          Writeln FileName        ;this returns 'TEST.MRX
  5772.     
  5773.     See Also: NamePart PathPart FilePart
  5774.     
  5775.     Category: String
  5776.     
  5777.  
  5778.     Computer Tyme * MarxMenu * Users Manual                 Page #94
  5779.     -----------------------------------------------------------------
  5780.     
  5781.      FileAppend (FileVar)     FileAppend (FileVar)     FileAppend (FileVar)
  5782.     
  5783.     Opens a file for access and moves the file pointer to the end of the
  5784.     file. File writes will start at the end of the file.
  5785.     
  5786.     See Also: FileOpen
  5787.     
  5788.     Category: File
  5789.     
  5790.     
  5791.      FileAssign (FileVar,String)     FileAssign (FileVar,String)     FileAssign (FileVar,String)
  5792.     
  5793.     Assigns a file variable to a file name. Files must be given a name
  5794.     before they can be accessed.
  5795.     
  5796.      Example: FileAssign(BatFile,'MARX.BAT')
  5797.     
  5798.     BatFile is a variable and after the FileAssign, it becomes a file
  5799.     variable. All access to the file is done using the file variable.
  5800.     
  5801.     If an empty string is passed as the file name, MarxMenu will use the
  5802.     standard console file handles.
  5803.     
  5804.     See Also: FileOpen
  5805.     
  5806.     Category: File
  5807.     
  5808.     
  5809.      FileAttr (string) : Number     FileAttr (string) : Number     FileAttr (string) : Number
  5810.     
  5811.     Returns the attribute of a file or directory.
  5812.     
  5813.     Category: File
  5814.     
  5815.     
  5816.      FileClose (FileVar)     FileClose (FileVar)     FileClose (FileVar)
  5817.     
  5818.     Closes a file and deallocates the memory space used by the file
  5819.     variable.
  5820.     
  5821.     See Also: FileOpen
  5822.     
  5823.     Category: File
  5824.     
  5825.     
  5826.      FileCreate (FileVar)     FileCreate (FileVar)     FileCreate (FileVar)
  5827.     
  5828.     Creates a new file. If the file exists, it overwrites the old one.
  5829.     FileCreate opens the file for output. Do not use FileOpen with
  5830.     FileCreate.
  5831.     
  5832.     See Also: FileWriteln
  5833.     
  5834.  
  5835.     Computer Tyme * MarxMenu * Users Manual                 Page #95
  5836.     -----------------------------------------------------------------
  5837.     
  5838.     Category: File
  5839.     
  5840.     
  5841.      FileDate (string) : Number     FileDate (string) : Number     FileDate (string) : Number
  5842.     
  5843.     Returns file date as 32 bit integer. See DOS manual for date structure.
  5844.     This function should not be confused with FileTime which is compatible
  5845.     with all other MarxMenu time commands.
  5846.     
  5847.     See Also: FileTime
  5848.     
  5849.     Category: File
  5850.     
  5851.     
  5852.      FileFlush (FileVar)     FileFlush (FileVar)     FileFlush (FileVar)
  5853.     
  5854.     Writes any information that is in the file buffers to disk.
  5855.     
  5856.     See Also: FileWriteln
  5857.     
  5858.     Category: File
  5859.     
  5860.     
  5861.      FileLog (FileName,String)     FileLog (FileName,String)     FileLog (FileName,String)
  5862.     
  5863.     FileLog opens the file if it exists, or creates it if it doesn't exist.
  5864.     It then seeks to the end of the file and writes the string to the end.
  5865.     The file is then closed. FileLog is typically used for things such as
  5866.     usage tracking.
  5867.     
  5868.      Example:
  5869.         FileLog('USAGE.LOG','Add This Line!')
  5870.     
  5871.     Category: File
  5872.     
  5873.     
  5874.      FileOpen (FileVar)     FileOpen (FileVar)     FileOpen (FileVar)
  5875.     
  5876.     Opens a file for access. FileOpen is not needed if you are using the
  5877.     ReadTextFile command. The following example copies a text file.
  5878.     
  5879.        var Inp Out St
  5880.     
  5881.        FileAssign(Inp,'INPUT.TXT')
  5882.        FileOpen(Inp)
  5883.        FileAssign(Out,'OUTPUT.TXT')
  5884.        FileCreate(Out)
  5885.        while not EndOfFile(Inp)
  5886.           St = FileReadln(Inp)
  5887.           FileWriteln(Out,St)
  5888.        endwhile
  5889.        FileClose(Inp)
  5890.        FileClose(Out)
  5891.     
  5892.  
  5893.     Computer Tyme * MarxMenu * Users Manual                 Page #96
  5894.     -----------------------------------------------------------------
  5895.     
  5896.     Category: File
  5897.     
  5898.     
  5899.      FilePart (String) : String     FilePart (String) : String     FilePart (String) : String
  5900.     
  5901.     Returns the file part of a file name.
  5902.     
  5903.      Example:
  5904.        NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU.EXE
  5905.     
  5906.     See Also: Extension PathPart NamePart
  5907.     
  5908.     Category: String
  5909.     
  5910.     
  5911.      FilePos (FileVar) : Number     FilePos (FileVar) : Number     FilePos (FileVar) : Number
  5912.     
  5913.     Returns the current file position in bytes of where you are at in a file
  5914.     that you are reading or writing. You can get back to the same place in
  5915.     the file by using FileSeek.
  5916.     
  5917.     See Also: FileSeek
  5918.     
  5919.     Category: File
  5920.     
  5921.     
  5922.      FileReadln (FileVar) : String     FileReadln (FileVar) : String     FileReadln (FileVar) : String
  5923.     
  5924.     Reads one line of an open file returning that line as a string.
  5925.     
  5926.      Example:
  5927.        Line3 = FileReadln(BatFile)
  5928.     
  5929.     See Also: FileOpen
  5930.     
  5931.     Category: File
  5932.     
  5933.     
  5934.      FileRename (Old,New)     FileRename (Old,New)     FileRename (Old,New)
  5935.     
  5936.     Renames a file from old name to new. A file may be moved to a new
  5937.     directory with this command.
  5938.     
  5939.      Example:
  5940.        FileRename ('F:\HOME\MARC\MESSAGE.TXT','F:\HOME\VICKI\MESSAGE.TXT')
  5941.     
  5942.     Category: File
  5943.     
  5944.  
  5945.     Computer Tyme * MarxMenu * Users Manual                 Page #97
  5946.     -----------------------------------------------------------------
  5947.     
  5948.      FileResult : Number     FileResult : Number     FileResult : Number
  5949.     
  5950.     Returns result code from last file IO. Result codes are the same as
  5951.     Turbo Pascal IOResult codes. These codes usually match the errors
  5952.     returned in the AX register of DOS commands. 0 indicates no problem.
  5953.     
  5954.      Example:
  5955.        DelFile 'TEST.TXT'
  5956.        if FileResult = 5 then Writeln 'ACCESS DENIED!'
  5957.     
  5958.     Category: File
  5959.     
  5960.     
  5961.      FileSeek (FileVar,Number)     FileSeek (FileVar,Number)     FileSeek (FileVar,Number)
  5962.     
  5963.     Moves the file pointer to a specified place in the file. This allows you
  5964.     to set the next place in a file that FileReadln will read from.
  5965.     
  5966.     See Also: FilePos FileReadln
  5967.     
  5968.     Category: File
  5969.     
  5970.     
  5971.      FileSize (string) : Number     FileSize (string) : Number     FileSize (string) : Number
  5972.     
  5973.     Returns size of file in bytes.
  5974.     
  5975.      Example:
  5976.        FileSize 'CONFIG.SYS'
  5977.     
  5978.     Category: File
  5979.     
  5980.     
  5981.      FileTime (File) : Time     FileTime (File) : Time     FileTime (File) : Time
  5982.     
  5983.     Returns the time of a file in MarxMenu format. This should not be
  5984.     confused with FileDate that returns the file time on DOS binary format.
  5985.     
  5986.     Category: File Time
  5987.     
  5988.     
  5989.      FileWrite (FileVar,String)     FileWrite (FileVar,String)     FileWrite (FileVar,String)
  5990.     
  5991.     Writes text to a file without a carriage return or line feed.
  5992.     
  5993.      Example:
  5994.        FileWrite (Out,Char(12))   ;writes a FormFeed to the file Out
  5995.     
  5996.     See Also: FileOpen
  5997.     
  5998.     Category: File
  5999.     
  6000.  
  6001.     Computer Tyme * MarxMenu * Users Manual                 Page #98
  6002.     -----------------------------------------------------------------
  6003.     
  6004.      FileWriteln (FileVar,String)     FileWriteln (FileVar,String)     FileWriteln (FileVar,String)
  6005.     
  6006.     Writes text to a file with a carriage return and a line feed.
  6007.     
  6008.      Example:
  6009.        FileWriteln (Out,'This Line')
  6010.     
  6011.     See Also: FileOpen
  6012.     
  6013.     Category: File
  6014.     
  6015.     
  6016.      FixPath     FixPath     FixPath
  6017.     
  6018.     This command reads your path command and verifies that all the paths are
  6019.     accessable. Any path that isn't accessable is removed from the master
  6020.     environment. This can be used on network drives to eliminate searching
  6021.     paths on fileservers that are no longer accessable.
  6022.     
  6023.     Category: Environment
  6024.     
  6025.     
  6026.      Floppies : Number     Floppies : Number     Floppies : Number
  6027.     
  6028.     Returns number of floppy drives in your computer.
  6029.     
  6030.     Category: System
  6031.     
  6032.     
  6033.      ForceExplosion (On/Off)     ForceExplosion (On/Off)     ForceExplosion (On/Off)
  6034.     
  6035.     This changes the explosion status of a window that already exists. This
  6036.     allows windows to implode that didn't explode.
  6037.     
  6038.     Category: Display
  6039.     
  6040.     
  6041.      ForceExtension (String,Ext) : String     ForceExtension (String,Ext) : String     ForceExtension (String,Ext) : String
  6042.     
  6043.     This command forces a file extension on a string.
  6044.     
  6045.      Example:
  6046.        St = ForceExtension('MAIN.MNU','MRX')
  6047.     
  6048.     This sets St equal to MAIN.MRX
  6049.     
  6050.     Category: String
  6051.     
  6052.  
  6053.     Computer Tyme * MarxMenu * Users Manual                 Page #99
  6054.     -----------------------------------------------------------------
  6055.     
  6056.      Fraction (Real) : Real     Fraction (Real) : Real     Fraction (Real) : Real
  6057.     
  6058.     Returns the fractional part of a real.
  6059.     
  6060.      Example:
  6061.        Fraction (2.36)   ;returns .36
  6062.     
  6063.     Category: Math Float
  6064.     
  6065.     
  6066.      FreeDiskSpace <drive> : Number     FreeDiskSpace <drive> : Number     FreeDiskSpace <drive> : Number
  6067.     
  6068.     Returns free disk space in bytes.
  6069.     
  6070.      Example:
  6071.        Writeln (FreeDiskSpace 'C')
  6072.     
  6073.     FreeDiskSpace only looks at the first character of the string for the
  6074.     drive letter.
  6075.     
  6076.     Category: System
  6077.     
  6078.     
  6079.      FreeEMS : Number     FreeEMS : Number     FreeEMS : Number
  6080.     
  6081.     Returns free EMS memory in bytes.
  6082.     
  6083.     Category: Memory
  6084.     
  6085.     
  6086.      FreeMem(Segment)     FreeMem(Segment)     FreeMem(Segment)
  6087.     
  6088.     FreeMem deallocates memory that was allocated with GetMem. FreeMem
  6089.     automatically knows how much memory to deallocate.
  6090.     
  6091.     See Also: GetMem
  6092.     
  6093.     Category: Memory
  6094.     
  6095.     
  6096.      FreeMemory : Number     FreeMemory : Number     FreeMemory : Number
  6097.     
  6098.     Returns the amount of free memory still available. This is the memory
  6099.     available to MarxMenu or the amount you would have using the Execute
  6100.     command.
  6101.     
  6102.     See Also: ApplicationMemory
  6103.     
  6104.     Category: Memory
  6105.     
  6106.  
  6107.     Computer Tyme * MarxMenu * Users Manual                 Page #100
  6108.     -----------------------------------------------------------------
  6109.     
  6110.      GetMem (Number) : Segment     GetMem (Number) : Segment     GetMem (Number) : Segment
  6111.     
  6112.     GetMem allocates the amount of memory specified in Number and returns
  6113.     the memory segment where the memory was allocated. The memory segment is
  6114.     filled with 0s. The maximum size of the memory block is 65504 bytes.
  6115.     
  6116.     You can then read and write to this memory area using the Mem commands.
  6117.     
  6118.      Example:
  6119.         var RamBlock
  6120.         RamBlock = GetMem(2000)  ;allocate 2000 bytes of memory
  6121.         Mem(RamBlock,0) = 5      ;writes the number 5 to the first byte
  6122.     
  6123.     See Also: FreeMem
  6124.     
  6125.     Category: Memory
  6126.     
  6127.     
  6128.      GotoXY (column,row)     GotoXY (column,row)     GotoXY (column,row)
  6129.     
  6130.     Move cursor to location column,row in current box.
  6131.     
  6132.      Example:
  6133.        GotoXY 35 9
  6134.     
  6135.     Category: Display Ansi
  6136.     
  6137.     
  6138.      HexString (Number, Length) : String     HexString (Number, Length) : String     HexString (Number, Length) : String
  6139.     
  6140.     HexString converts a number into a base 16 hexadecimal string. If Length
  6141.     > 0 then the number will have enough leading zeros to make it Length
  6142.     long. If Length = 0 then leading zeros are removed. Length must be 8 or
  6143.     less.
  6144.     
  6145.      Example:
  6146.         Writeln HexSt(253,4)   ;returns 00FD
  6147.         Writeln HexSt(253,0)   ;returns FD
  6148.     
  6149.     See Also: BinString
  6150.     
  6151.     Category: String
  6152.     
  6153.     
  6154.      HiddenAndSystem (On/Off)     HiddenAndSystem (On/Off)     HiddenAndSystem (On/Off)
  6155.     
  6156.     Controls if ReadDirectory will read hidden and system files.
  6157.     
  6158.     See Also: ReadDirectory
  6159.     
  6160.     Category: File
  6161.     
  6162.  
  6163.     Computer Tyme * MarxMenu * Users Manual                 Page #101
  6164.     -----------------------------------------------------------------
  6165.     
  6166.      HighWord (Number) : Number     HighWord (Number) : Number     HighWord (Number) : Number
  6167.     
  6168.     Returns the value of the upper 16 bits of a number.
  6169.     
  6170.     See Also: LowWord
  6171.     
  6172.     Category: Math
  6173.     
  6174.     
  6175.      Hour : Number     Hour : Number     Hour : Number
  6176.     
  6177.     Return the current hour. 24 hour format.
  6178.     
  6179.     Category: Time
  6180.     
  6181.     
  6182.      HourOf (Date) : Number     HourOf (Date) : Number     HourOf (Date) : Number
  6183.     
  6184.     Returns the hour of a date. If Date is passed as a string it is
  6185.     converted automatically.
  6186.     
  6187.      Example:
  6188.        HourOf '6:00 pm'  ;returns 18
  6189.     
  6190.     See Also: TimeOf BadDate
  6191.     
  6192.     Category: Time
  6193.     
  6194.     
  6195.      Hundredth : Number     Hundredth : Number     Hundredth : Number
  6196.     
  6197.     Returns the 1/100 of a second from the system clock. Note that the
  6198.     system clock timer tick is 1/18 second so don't expect a lot of accuracy
  6199.     here.
  6200.     
  6201.     Category: Time
  6202.     
  6203.     
  6204.      IdleProgram : Procedure     IdleProgram : Procedure     IdleProgram : Procedure
  6205.     
  6206.     IdleProgram is a variable that when set to the location of a procedure
  6207.     allows the procedure to run while waiting at the keyboard. This is done
  6208.     by writing a procedure that will run while waiting for input.
  6209.     
  6210.     The way you use this is to set an internal variable named IdleProgram to
  6211.     the Loc of the procedure you want to run as follows:
  6212.     
  6213.      Example:
  6214.        IdleProgram = Loc MyProcedure
  6215.     
  6216.     Note: Do not use parentheses around MyProcedure.
  6217.     
  6218.  
  6219.     Computer Tyme * MarxMenu * Users Manual                 Page #102
  6220.     -----------------------------------------------------------------
  6221.     
  6222.     When writing MyProcedure make it as short and quick as possible. As of
  6223.     now, MyProcedure is called continuously while there is no keyboard
  6224.     input. You can also use a loop in it as follows.
  6225.     
  6226.      Procedure MyProcedure
  6227.         SetItUp
  6228.         while not KBDReady
  6229.            {do your thing}
  6230.         endwhile
  6231.         PutItBack
  6232.      EndProc
  6233.     
  6234.     MarxMenu doesn't automatically exit your procedure or save and restore
  6235.     anything. If you're writing to the screen you have to put everything
  6236.     back the way it was.
  6237.     
  6238.     If you want to run a program at a specific time, here's how it can be
  6239.     done:
  6240.     
  6241.      Procedure MyProcedure
  6242.         if Now = TimeOf('11:00pm')
  6243.            Bat 'NIGHT'             ;run NIGHT.BAT
  6244.            ExitMenu
  6245.         endif
  6246.         if Now = TimeOf('5:00')
  6247.            Bat 'MORNING'           ;run MORNING.BAT
  6248.            ExitMenu
  6249.         endif
  6250.      EndProc
  6251.     
  6252.     To disable IdleProgram run:
  6253.     
  6254.       Dispose(IdleProgram)
  6255.     
  6256.     See Also: Run Loc BlankScreenProgram
  6257.     
  6258.     Category: Execution
  6259.     
  6260.     
  6261.      If     If     If
  6262.     
  6263.     Used for conditional program control.
  6264.     
  6265.      Usage:
  6266.     
  6267.      IF (condition) THEN (statement)
  6268.     
  6269.      IF (condition)
  6270.         (statement)
  6271.         (statement)
  6272.     
  6273.  
  6274.     Computer Tyme * MarxMenu * Users Manual                 Page #103
  6275.     -----------------------------------------------------------------
  6276.     
  6277.      ELSEIF (condition)
  6278.         (statement)
  6279.         (statement)
  6280.     
  6281.      ELSE
  6282.         (statement)
  6283.         (statement)
  6284.     
  6285.      ENDIF
  6286.     
  6287.     Category: Conditional
  6288.     
  6289.     See Also: Else ElseIf Then EndIf
  6290.     
  6291.     
  6292.      InactiveBox (BoxType)     InactiveBox (BoxType)     InactiveBox (BoxType)
  6293.     
  6294.     This is used to select the type of box border to use when a window is
  6295.     not the current window. If any inactive box type is specified, then when
  6296.     you execute another DrawBox, the old window's border changes to the
  6297.     inactive box type. The inactive window also loses its headers and
  6298.     shadows.
  6299.     
  6300.     Note that InActiveBox must be used BEFORE the DrawBox command.
  6301.     
  6302.      Example:
  6303.        InActiveBox (SingleLineBox) ;switches to single line box if
  6304.                                     inactive.
  6305.     
  6306.        InactiveBox (NoBoxBorder)   ;disables InActive effect.
  6307.     
  6308.     See Also: InactiveBoxColor InactiveShadow
  6309.     
  6310.     Category: Display
  6311.     
  6312.     
  6313.      InactiveBoxColor (foreground,background)     InactiveBoxColor (foreground,background)     InactiveBoxColor (foreground,background)
  6314.     
  6315.     Selects the color of the inactive box window. If Black on Black is
  6316.     selected, (default), the inactive box color is the same as the active
  6317.     box color.
  6318.     
  6319.      Example:
  6320.        BoxBorderColor Yellow Blue
  6321.        InActiveBoxColor Brown Blue
  6322.     
  6323.     See Also: InactiveBox InactiveShadow
  6324.     
  6325.     Category: Color
  6326.     
  6327.  
  6328.     Computer Tyme * MarxMenu * Users Manual                 Page #104
  6329.     -----------------------------------------------------------------
  6330.     
  6331.      InactiveShadow (On/Off)     InactiveShadow (On/Off)     InactiveShadow (On/Off)
  6332.     
  6333.     When InactiveShadow is set to off, the window shadow disappears when
  6334.     then window is not the top window.
  6335.     
  6336.     See Also: InactiveBox InactiveBoxColor
  6337.     
  6338.     Category: Display
  6339.     
  6340.     
  6341.      Include (MenuName)     Include (MenuName)     Include (MenuName)
  6342.     
  6343.     This is used to insert the menu code from another file into the menu
  6344.     that you are compiling.
  6345.     
  6346.      Example:
  6347.        Include 'DOS.MNU'
  6348.     
  6349.     This will compile DOS.MNU into your present menu as if that whole file
  6350.     were part of the menu you are working on.
  6351.     
  6352.     This is useful if you have several menus that share common code. By
  6353.     moving this common code to a separate file, and using an Include
  6354.     statement, you can change the common code and update several menus at
  6355.     once. If you are using overlays, it is a good idea to put your shared
  6356.     variables in an include file. This asures that the shared variables will
  6357.     be the same for all overlays.
  6358.     
  6359.     Changing an include file does not cause MarxMenu to recompile
  6360.     automatically like changing the MNU does. You will have to force it to
  6361.     compile your menus.
  6362.     
  6363.     This can be done several ways. You can type MARXCOMP (menu) or you can
  6364.     just type DEL *.MRX which will cause all the menus to recompile the next
  6365.     time they are run.
  6366.     
  6367.     Category: Misc
  6368.     
  6369.     
  6370.      IncludeDirectories (On/Off)     IncludeDirectories (On/Off)     IncludeDirectories (On/Off)
  6371.     
  6372.     Controls if ReadDirectory will read directories along with file names.
  6373.     
  6374.     See Also: ReadDirectory
  6375.     
  6376.     Category: File
  6377.     
  6378.  
  6379.     Computer Tyme * MarxMenu * Users Manual                 Page #105
  6380.     -----------------------------------------------------------------
  6381.     
  6382.      InFile : String     InFile : String     InFile : String
  6383.     
  6384.     When using StandardIO the input and output files by default use the
  6385.     console. The input can be overridden by setting InFife to point to a
  6386.     different file or device.
  6387.     
  6388.      Example:
  6389.         InFile = 'INPUT.TXT'
  6390.         StandardIO
  6391.     
  6392.     See Also: OutFile StandardIO
  6393.     
  6394.     Category: File
  6395.     
  6396.     
  6397.      InputBlankChar     InputBlankChar     InputBlankChar
  6398.     
  6399.     InputBlankChar is used with Readln to display the input string area for
  6400.     entering information into a string. By default it is set to a space
  6401.     character but can be set to an underline or other characters to make the
  6402.     field size visable.
  6403.     
  6404.      Example:
  6405.        InputBlankChar = '_'  ;underline
  6406.        InputLength = 10
  6407.        Write 'Enter Postal Code: '
  6408.        ZipCode = Readln
  6409.     
  6410.     See Also: Readln
  6411.     
  6412.     Category: String
  6413.     
  6414.     
  6415.      InputLength     InputLength     InputLength
  6416.     
  6417.     When using Readln to get input from the keyboard, MarxMenu normally
  6418.     accepts data from the cursor to the edge of the current window. By
  6419.     setting InputLength to a value, MarxMenu will limit the size of the data
  6420.     to a specific length.
  6421.     
  6422.      Example:
  6423.        InputLength = 10
  6424.        Write 'Enter Postal Code: '
  6425.        ZipCode = Readln
  6426.     
  6427.     InputLength is reset to 0 after each Readln.
  6428.     
  6429.     See Also: Readln
  6430.     
  6431.     Category: String
  6432.     
  6433.  
  6434.     Computer Tyme * MarxMenu * Users Manual                 Page #106
  6435.     -----------------------------------------------------------------
  6436.     
  6437.      InputString (String)     InputString (String)     InputString (String)
  6438.     
  6439.     Preloads a string for the Readln command. The next Readln will have the
  6440.     InputString on the screen for you to edit or accept. Once Readln
  6441.     executes, InputString is cleared to a blank string.
  6442.     
  6443.      Example:
  6444.        InputString = ReadEnv('USERNAME')
  6445.        YourName = Readln
  6446.     
  6447.     See Also: Readln
  6448.     
  6449.     Category: String
  6450.     
  6451.     
  6452.      Insert (InsString,OrigString,Pos)     Insert (InsString,OrigString,Pos)     Insert (InsString,OrigString,Pos)
  6453.     
  6454.     Inserts a string into a string.
  6455.     
  6456.      Example:
  6457.        St = 'ABCDEF'
  6458.        Insert('123',St,3)
  6459.     
  6460.     St will become 'ABC123DEF'
  6461.     
  6462.     Category: String
  6463.     
  6464.     
  6465.      InsertMode (On/Off)     InsertMode (On/Off)     InsertMode (On/Off)
  6466.     
  6467.     Turns insert mode on and off for Readln commands.
  6468.     
  6469.     See Also: Readln
  6470.     
  6471.     Category: Keyboard
  6472.     
  6473.     
  6474.      Int (Real) : Real     Int (Real) : Real     Int (Real) : Real
  6475.     
  6476.     Returns the integer part of a real as a real.
  6477.     
  6478.      Example:
  6479.        Int(2.36)  ;returns 2.0
  6480.     
  6481.     Category: Math Float
  6482.     
  6483.  
  6484.     Computer Tyme * MarxMenu * Users Manual                 Page #107
  6485.     -----------------------------------------------------------------
  6486.     
  6487.      Integer (Real) : Number     Integer (Real) : Number     Integer (Real) : Number
  6488.     
  6489.     Returns the integer part of a real as an integer. The fractional part is
  6490.     truncated.
  6491.     
  6492.      Example:
  6493.        Int(2.36)  ;returns 2
  6494.     
  6495.     Category: Math Float
  6496.     
  6497.     
  6498.      Intr (Interrupt,Registers)     Intr (Interrupt,Registers)     Intr (Interrupt,Registers)
  6499.     
  6500.     Intr works just like MsDos except that it lets you choose which
  6501.     interrupt you want to call. See MsDos for Details.
  6502.     
  6503.     See Also: MsDos
  6504.     
  6505.     Category: System
  6506.     
  6507.     
  6508.      InverseColor (forecolor,backcolor)     InverseColor (forecolor,backcolor)     InverseColor (forecolor,backcolor)
  6509.     
  6510.     Sets colors for inverse bar used with UseArrows command.
  6511.     
  6512.      Example:
  6513.        InverseColor Yellow Mag
  6514.     
  6515.     Category: Color
  6516.     
  6517.     
  6518.      InvertString (String)     InvertString (String)     InvertString (String)
  6519.     
  6520.     InvertString turns a string around so that characters are in reverse
  6521.     order. This allows for correct string compares and sorts in Hebrew and
  6522.     Arabic and other languages that are read from right to left.
  6523.     
  6524.      Example:
  6525.        var St
  6526.        St = 'ABCDE'
  6527.        InvertString(St)
  6528.        Writeln St        ;Returns 'EDCBA'
  6529.     
  6530.     Category: String
  6531.     
  6532.     
  6533.      Jump (menu)     Jump (menu)     Jump (menu)
  6534.     
  6535.     Jumps to another menu and does not return to original menu.
  6536.     
  6537.      Example:
  6538.        Jump 'MYMENU'
  6539.     
  6540.  
  6541.     Computer Tyme * MarxMenu * Users Manual                 Page #108
  6542.     -----------------------------------------------------------------
  6543.     
  6544.     See Also: Chain
  6545.     
  6546.     Category: Execution
  6547.     
  6548.     
  6549.      KbdReady : Boolean     KbdReady : Boolean     KbdReady : Boolean
  6550.     
  6551.     Returns true if a Key has been pressed.
  6552.     
  6553.     See Also: ReadKey
  6554.     
  6555.     Category: Keyboard
  6556.     
  6557.     
  6558.      KeySave : String     KeySave : String     KeySave : String
  6559.     
  6560.     Stores your keystrokes that you pressed to get to the menu level where
  6561.     you are at. KeySave is passed to DOS using the SET KSV= command to store
  6562.     your position in the menu system. To make this work, you must execute
  6563.     SavePosition On.
  6564.     
  6565.     This variable can be set by you to force MarxMenu to return to a place
  6566.     in the menu other than where you are. This allows MarxMenu to suggest a
  6567.     next step.
  6568.     
  6569.     See Also: SavePosition
  6570.     
  6571.     Category: String Environment Execution
  6572.     
  6573.     
  6574.      KeyFromMouse : Boolean     KeyFromMouse : Boolean     KeyFromMouse : Boolean
  6575.     
  6576.     Normally mouse activity is translated into keystrokes. This variable is
  6577.     set to true if the keystroke came from the mouse.
  6578.     
  6579.     See Also: KbdReady ReadKey
  6580.     
  6581.     Category: MouseControl
  6582.     
  6583.     
  6584.      KillMusic     KillMusic     KillMusic
  6585.     
  6586.     This command stops the music and de-allocates the memory used by the
  6587.     music buffer.
  6588.     
  6589.     Category: Music
  6590.     
  6591.  
  6592.     Computer Tyme * MarxMenu * Users Manual                 Page #109
  6593.     -----------------------------------------------------------------
  6594.     
  6595.      LastDrive : String     LastDrive : String     LastDrive : String
  6596.     
  6597.     Returns the drive letter of the last local drive in the system as set by
  6598.     CONFIG.SYS. By default, this is drive letter E. On a Novell network the
  6599.     drive after LastDrive is the first network drive.
  6600.     
  6601.     Category: Novell System
  6602.     
  6603.     
  6604.      LastKey : String     LastKey : String     LastKey : String
  6605.     
  6606.     LastKey returns the last key that was typed at the keyboard. This can be
  6607.     used after a Readln to determine if the ESC key was pressed or perhaps
  6608.     the up or down arrow keys.
  6609.     
  6610.     Sometimes after the press of an ESC key, MarxMenu wants to exit more
  6611.     levels than you want it to. This can be controlled by setting LastKey =
  6612.     ' ' to stop the abort process.
  6613.     
  6614.     See Also: Readln OnKey
  6615.     
  6616.     Category: String
  6617.     
  6618.     
  6619.      Left (string,count) : String     Left (string,count) : String     Left (string,count) : String
  6620.     
  6621.     Returns string starting at the beginning for count characters.
  6622.     
  6623.      Example:
  6624.        Left('ABCDEF',3)   ;returns 'ABC'
  6625.     
  6626.     Category: String
  6627.     
  6628.     
  6629.      Length (string) : Number     Length (string) : Number     Length (string) : Number
  6630.     
  6631.     Returns the length of the string or sets the length of a string.
  6632.     
  6633.      Example: Length('ABCD') returns 4.
  6634.     
  6635.      Example:
  6636.        var St
  6637.          St = '123456'
  6638.          Length(St) = 3
  6639.          Writeln St      ;this produces '123'
  6640.     
  6641.     If you set the length longer than the original string the string is
  6642.     padded with blanks on the end.
  6643.     
  6644.     Category: String
  6645.     
  6646.  
  6647.     Computer Tyme * MarxMenu * Users Manual                 Page #110
  6648.     -----------------------------------------------------------------
  6649.     
  6650.      Ln (Real) : Real     Ln (Real) : Real     Ln (Real) : Real
  6651.     
  6652.     Returns the Natural Logarithm of a real.
  6653.     
  6654.      Example:
  6655.        Exp(Ln(5) * 3) = 125
  6656.     
  6657.     See Also: Exp
  6658.     
  6659.     Category: Math Float
  6660.     
  6661.     
  6662.      Loc (Procedure or Variable)     Loc (Procedure or Variable)     Loc (Procedure or Variable)
  6663.     
  6664.     When used with a procedure, Loc returns the location of a procedure for
  6665.     storing in a variable. The variable is later executed using the Run
  6666.     command.
  6667.     
  6668.     When used with a variable, Loc returns the location of a variable rather
  6669.     than it's contents. Thus B = Loc A sets B to point to A.
  6670.     
  6671.      Example:
  6672.         Var A B
  6673.            B = Loc A
  6674.            B = 9
  6675.            Writeln A  ;returns 9
  6676.     
  6677.      Example:
  6678.         Var A
  6679.     
  6680.      TestLoc (Loc A)
  6681.      Writeln A ;returns 9
  6682.     
  6683.      Procedure TestLoc (B)
  6684.         B = 9
  6685.      EndProc
  6686.     
  6687.     The rule is that all indirect location references are resolved in the
  6688.     process of evaluating an expression.
  6689.     
  6690.      Example:
  6691.         Var A B C D
  6692.            B = Loc A
  6693.            C = Loc B
  6694.            D = Loc C
  6695.            D = 9
  6696.            Writeln A   ; Returns 9
  6697.     
  6698.     As you would expect, qualifiers and multidimensional array addressing
  6699.     works with indirect addressing.
  6700.     
  6701.  
  6702.     Computer Tyme * MarxMenu * Users Manual                 Page #111
  6703.     -----------------------------------------------------------------
  6704.     
  6705.      Example:
  6706.         var A B C D E
  6707.     
  6708.         A[3] = 12
  6709.         C = 3
  6710.         B = Loc C
  6711.     
  6712.         D = Loc E
  6713.         D[7] = 8
  6714.     
  6715.         TestLoc (Loc A[B])
  6716.         Writeln A[B,9,E[7]]
  6717.     
  6718.         Procedure TestLoc (X)
  6719.            Writeln X
  6720.            X[9,D[7]] = 6
  6721.            Writeln X[9,E[7]]
  6722.         EndProc
  6723.     
  6724.     See Also: Run Actual
  6725.     
  6726.     Category: Variable
  6727.     
  6728.     
  6729.      LockWord (word)     LockWord (word)     LockWord (word)
  6730.     
  6731.     Sets a default word for the console activated keyboard lock. When the
  6732.     screen goes blank, the user has to type the LockWord to unblank the
  6733.     screen. This is a security feature so that if a user leaves the menu
  6734.     unattended, it prevents others from tampering with the system.
  6735.     
  6736.      Example:
  6737.        LockWord = 'secret'
  6738.     
  6739.     See Also: LogoffTime BlankTime UseNovPassword
  6740.     
  6741.     Category: Display
  6742.     
  6743.     
  6744.      Logoff     Logoff     Logoff
  6745.     
  6746.     Logoff logs you off the network the same way that LogoffTime does except
  6747.     it does it immediately. See LogoffTime for details as to how.
  6748.     
  6749.      Example:
  6750.        OnKey 'L'
  6751.          |Logoff   ;note the use of the '|' under the OnKey statement
  6752.     
  6753.     See Also: LogoffTime
  6754.     
  6755.  
  6756.     Computer Tyme * MarxMenu * Users Manual                 Page #112
  6757.     -----------------------------------------------------------------
  6758.     
  6759.     Category: Execution
  6760.     
  6761.     
  6762.      LogoffTime : Number     LogoffTime : Number     LogoffTime : Number
  6763.     
  6764.     MarxMenu supports automatic logoff after a number of minutes of
  6765.     inactivity set by LogoffTime. This only has effect while you are in the
  6766.     menu and not while an application is running. It is set as follows:
  6767.     
  6768.      LogoffTime = 5 ;sets time to 5 minutes
  6769.     
  6770.     Setting LogoffTime to 0 disbles this feature.
  6771.     
  6772.     On a Novell network the current drive is changed to the first network
  6773.     drive letter. Any map roots on this drive are removed. Then it changes
  6774.     to the \LOGIN directory. Typically the current directory will be set to
  6775.     F:\LOGIN.
  6776.     
  6777.     MarxMenu will first look for a batch file in the \LOGIN directory called
  6778.     OFF.BAT. If it doesn't find it, MarxMenu will look for OFF.BAT on the
  6779.     PATH. If this isn't found, MarxMenu will look for LOGOFF.EXE. If this
  6780.     isn't found, then MarxMenu will look for LOGOUT.COM.
  6781.     
  6782.     LOGOFF.EXE and LOGOUT.COM are executed by stuffing the keyboard buffer.
  6783.     
  6784.     The best way to use this feature is to create an OFF.BAT file in your
  6785.     \LOGIN directory or on the PATH.
  6786.     
  6787.     Logging off is a tricky process and requires that everything is done
  6788.     right in order for it to work. If strange things happen use ECHO ON and
  6789.     PAUSE in you batch files in order to watch what is happening.
  6790.     
  6791.     See Also: LockWord Logoff
  6792.     
  6793.     Category: Execution
  6794.     
  6795.     
  6796.      Logout     Logout     Logout
  6797.     
  6798.     Same as Logoff.
  6799.     
  6800.     Category: Execution
  6801.     
  6802.     See Also: Logoff LogoffTime
  6803.     
  6804.  
  6805.     Computer Tyme * MarxMenu * Users Manual                 Page #113
  6806.     -----------------------------------------------------------------
  6807.     
  6808.      Loop     Loop     Loop
  6809.     
  6810.     MarxMenu has a looping structure that lets you execute a piece of code a
  6811.     specific number of times. It is used as follows:
  6812.     
  6813.      Example:
  6814.        Loop 8
  6815.           Writeln 'Pass Number ' LoopIndex
  6816.        EndLoop
  6817.     
  6818.     You start with LOOP (Number) which specifies the number of times to
  6819.     execute the code between LOOP and ENDLOOP. There are 2 variables
  6820.     available here for loop control. LoopIndex starts at 1 and is
  6821.     incremented at each EndLoop. When LoopIndex becomes greater than
  6822.     LoopLimit, the loop exits. LoopIndex and LoopLimit refer to the
  6823.     innermost loop.
  6824.     
  6825.     As loops are nested LoopIndexes and LoopLimits are kept in two arrays;
  6826.     LoopIndexStack and LoopLimitStack. There is also a variable called
  6827.     LoopLevel which points to the current loop parameters.
  6828.     
  6829.      Thus:
  6830.        LoopIndex is the same as LoopIndexStack[LoopLevel]
  6831.        LoopLimit is the same as LoopLimitStack[LoopLevel]
  6832.     
  6833.     You may therefore access outer loop parameters through the loop stacks.
  6834.     For instance LoopIndexStack[LoopLevel - 1] would refer to the second
  6835.     innermost loop index. LoopIndexStack[1] refers to the outermost loop.
  6836.     
  6837.     The loop variables can be read and written to so you can adjust the
  6838.     looping parameters while inside the loop. You can even adjust the
  6839.     parameters of outer loops.
  6840.     
  6841.     You can also pass an array to a loop instead of a number. If an array is
  6842.     passed MarxMenu will loop for the number of elements in that array.
  6843.     
  6844.      Example:
  6845.         Var X
  6846.         ReadTextFile('MARXREAD.ME',X)
  6847.         OpenPrinter
  6848.           ;Loop X is the same as Loop NumberOfElements X
  6849.         Loop X
  6850.            PrintLn X[LoopIndex]
  6851.         EndLoop
  6852.         ClosePrinter
  6853.     
  6854.     See Also: EndLoop LoopIndex LoopLimit LoopLevel
  6855.     
  6856.  
  6857.     Computer Tyme * MarxMenu * Users Manual                 Page #114
  6858.     -----------------------------------------------------------------
  6859.     
  6860.     Category: Conditional
  6861.     
  6862.     
  6863.      LoopIndex : Number     LoopIndex : Number     LoopIndex : Number
  6864.     
  6865.     Returns the index of the loop you are in.
  6866.     
  6867.      Example:
  6868.        Loop 5
  6869.           Writeln LoopIndex    ;writes the numbers 1 to 5
  6870.        EndLoop
  6871.     
  6872.     See Also: Loop EndLoop LoopLimit LoopLevel
  6873.     
  6874.     Category: Conditional
  6875.     
  6876.     
  6877.      LoopLevel : Number     LoopLevel : Number     LoopLevel : Number
  6878.     
  6879.     Returns the number of nested loops currently running. This includes all
  6880.     nested loops not just the current procedure.
  6881.     
  6882.     See Also: Loop EndLoop LoopLimit LoopIndex
  6883.     
  6884.     Category: Conditional
  6885.     
  6886.     
  6887.      LoopLimit : Number     LoopLimit : Number     LoopLimit : Number
  6888.     
  6889.     Returns the upper limit of the loop you are in.
  6890.     
  6891.      Example:
  6892.        Loop 5
  6893.           Writeln LoopLimit   ;writes the number 5, 5 times.
  6894.        EndLoop
  6895.     
  6896.     See Also: Loop EndLoop LoopIndex LoopLevel
  6897.     
  6898.     Category: Conditional
  6899.     
  6900.     
  6901.      LowerCase (String) : String     LowerCase (String) : String     LowerCase (String) : String
  6902.     
  6903.     Returns the lower case of the string according to international
  6904.     character rules.
  6905.     
  6906.      Example:
  6907.        Writeln LowerCase('ABCDE')   ;returns 'abcde'
  6908.     
  6909.     See Also: UpperCase
  6910.     
  6911.     Category: String International
  6912.     
  6913.  
  6914.     Computer Tyme * MarxMenu * Users Manual                 Page #115
  6915.     -----------------------------------------------------------------
  6916.     
  6917.      LowWord (Number) : Number     LowWord (Number) : Number     LowWord (Number) : Number
  6918.     
  6919.     Returns the value of the lower 16 bits of a number.
  6920.     
  6921.      Example:
  6922.        LowWord -1   ;returns 255
  6923.     
  6924.     See Also: HighWord
  6925.     
  6926.     Category: Math
  6927.     
  6928.     
  6929.      MachineName : String     MachineName : String     MachineName : String
  6930.     
  6931.     This reads or sets the MachineName for NetBios networks.
  6932.     
  6933.      Example:
  6934.         MachineName = IBM   ;sets the MachineName
  6935.         Writeln MachineName ;displays the MachineName
  6936.     
  6937.     Category: Novell MSNet Vines
  6938.     
  6939.     
  6940.      MakeListEntry (Local Name, Server Name)     MakeListEntry (Local Name, Server Name)     MakeListEntry (Local Name, Server Name)
  6941.     
  6942.     MakeListEntry adds an entry to the network redirection list for
  6943.     assigning drive letters to network servers or redirecting printer output
  6944.     to network printers.
  6945.     
  6946.      Example:
  6947.        MakeListEntry ('P:','\\TYME\SYS\PUBLIC')
  6948.        MakeListEntry ('LPT1','\\TYME\LASER')
  6949.     
  6950.     See Also: AssignList CancelListEntry
  6951.     
  6952.     Category: Novell MSNet Vines
  6953.     
  6954.     
  6955.      MarxVersion : String     MarxVersion : String     MarxVersion : String
  6956.     
  6957.     Returns the version number of the MarxMenu you are running.
  6958.     
  6959.     Category: String
  6960.     
  6961.     
  6962.      MasterEnvironment     MasterEnvironment     MasterEnvironment
  6963.     
  6964.     MasterEnvironment selects the Master Environment for use with
  6965.     environment access commands.
  6966.     
  6967.     See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  6968.     See Also: CurrentEnvironment ParentEnvironment
  6969.     
  6970.  
  6971.     Computer Tyme * MarxMenu * Users Manual                 Page #116
  6972.     -----------------------------------------------------------------
  6973.     
  6974.     Category: Environment
  6975.     
  6976.     
  6977.      Max (Num,Num) : Num     Max (Num,Num) : Num     Max (Num,Num) : Num
  6978.     
  6979.     Returns the largest of two numbers or strings.
  6980.     
  6981.      Example:
  6982.        Writeln Max(2,3)     ;returns 3
  6983.     
  6984.     See Also: Min
  6985.     
  6986.     Category: Math String Float
  6987.     
  6988.     
  6989.      MatrixInvert (2D Array)     MatrixInvert (2D Array)     MatrixInvert (2D Array)
  6990.     
  6991.     MatrixInvert reverses the coordinates of a 2 dimensional array. This is
  6992.     uesfull when used with ReadAscTextFile to reverse the field and record
  6993.     layout.
  6994.     
  6995.      Example:
  6996.        var Data NameList
  6997.     
  6998.        ReadAscTextFile('PHONE.LST',Data)
  6999.        MatrixInvert Data
  7000.        NameList = Data[1]
  7001.     
  7002.     Category: Array
  7003.     
  7004.     
  7005.      Mem (seg,ofs) : Number     Mem (seg,ofs) : Number     Mem (seg,ofs) : Number
  7006.     
  7007.     Returns the byte at memory location seg:ofs or lets you write to the
  7008.     byte at seg:ofs.
  7009.     
  7010.      Example:
  7011.        X = Mem(40,5)  ;reads memory into X
  7012.        Mem(40,5) = X  ;writes X into memory
  7013.     
  7014.     See Also: MemW MemL
  7015.     
  7016.     Category: Memory
  7017.     
  7018.     
  7019.      MemL (seg,ofs) : Number     MemL (seg,ofs) : Number     MemL (seg,ofs) : Number
  7020.     
  7021.     Returns the long integer at memory location seg:ofs or lets you write to
  7022.     the byte at seg:ofs.
  7023.     
  7024.      Example:
  7025.        X = MemL(40,5)  ;reads memory into X
  7026.        MemL(40,5) = X  ;writes X into memory
  7027.     
  7028.  
  7029.     Computer Tyme * MarxMenu * Users Manual                 Page #117
  7030.     -----------------------------------------------------------------
  7031.     
  7032.     See Also: Mem MemW
  7033.     
  7034.     Category: Memory
  7035.     
  7036.     
  7037.      MemSize : Number     MemSize : Number     MemSize : Number
  7038.     
  7039.     Returns total memory size in K. (640 = 640k)
  7040.     
  7041.     Category: Memory
  7042.     
  7043.     
  7044.      MemW (seg,ofs) : Number     MemW (seg,ofs) : Number     MemW (seg,ofs) : Number
  7045.     
  7046.     Returns the word at memory location seg:ofs or lets you write to the
  7047.     byte at seg:ofs.
  7048.     
  7049.      Example:
  7050.        X = MemW(40,5)  ;reads memory into X
  7051.        MemW(40,5) = X  ;writes X into memory
  7052.     
  7053.     See Also: Mem MemL
  7054.     
  7055.     Category: Memory
  7056.     
  7057.     
  7058.      MenuKeyBuffer     MenuKeyBuffer     MenuKeyBuffer
  7059.     
  7060.     This is an internal MarxMenu variable. It is where the environment
  7061.     variable KSV= is read. Characters in this string variable are treated as
  7062.     if someone had typed them from the keyboard.
  7063.     
  7064.     This variable can be set to blank in order to override the effects of
  7065.     SET KSV= or can be set to a different value in order to automatically
  7066.     make selections as if they were typed in.
  7067.     
  7068.     See Also: SavePosition KeySave
  7069.     
  7070.     Category: Keyboard
  7071.     
  7072.     
  7073.      MhsDirectory : String     MhsDirectory : String     MhsDirectory : String
  7074.     
  7075.     Returns the directory of MHS.
  7076.     
  7077.      Example:
  7078.        Writeln MhsDirectory   ; '\\TYME\SYS\MHS'
  7079.     
  7080.     Category: MHS
  7081.     
  7082.  
  7083.     Computer Tyme * MarxMenu * Users Manual                 Page #118
  7084.     -----------------------------------------------------------------
  7085.     
  7086.      MhsMailDirectory : String     MhsMailDirectory : String     MhsMailDirectory : String
  7087.     
  7088.     Returns the mail directory of MHS.
  7089.     
  7090.      Example:
  7091.        Writeln MhsMailDirectory   ; '\\TYME\SYS\MHS\MAIL'
  7092.     
  7093.     Category: MHS
  7094.     
  7095.     
  7096.      MhsReadFile (FileName,Header,Message)     MhsReadFile (FileName,Header,Message)     MhsReadFile (FileName,Header,Message)
  7097.     
  7098.     MhsReadFile reads FilName into two arrays. The Header array contains the
  7099.     MHS message header. The Message array contains the MHS message.
  7100.     
  7101.      Example:
  7102.        var MailFiles Mail Headers X
  7103.     
  7104.        WholeFileNames
  7105.        ReadDirectory(MhsUserDirectory + '\MHS\*.',MailFiles)
  7106.     
  7107.        Loop MailFiles
  7108.           MhsReadFile(MailFiles[LoopIndex],Mail[LoopIndex],Headers[LoopIndex])
  7109.        EndLoop
  7110.     
  7111.        Loop Mail
  7112.           X = LoopIndex
  7113.           Loop Headers[X]
  7114.              Writeln Headers[X,LoopIndex]
  7115.           EndLoop
  7116.     
  7117.           Loop Mail[X]
  7118.              Writeln Mail[X,LoopIndex]
  7119.           EndLoop
  7120.        EndLoop
  7121.     
  7122.     Category: MHS
  7123.     
  7124.     
  7125.      MhsSendDirectory : String     MhsSendDirectory : String     MhsSendDirectory : String
  7126.     
  7127.     Returns the directory of MHS where messages are placed to be sent.
  7128.     
  7129.      Example:
  7130.        Writeln MhsSendDirectory   ; '\\TYME\SYS\MHS\MAIL\SND'
  7131.     
  7132.     Category: MHS
  7133.     
  7134.  
  7135.     Computer Tyme * MarxMenu * Users Manual                 Page #119
  7136.     -----------------------------------------------------------------
  7137.     
  7138.      MhsUserDirectory : String     MhsUserDirectory : String     MhsUserDirectory : String
  7139.     
  7140.     Returns the user directory of MHS.
  7141.     
  7142.      Example:
  7143.        Writeln MhsMailDirectory   ; '\\TYME\SYS\MHS\MAIL\USERS\MARC'
  7144.     
  7145.     Category: MHS
  7146.     
  7147.     
  7148.      Mid (string,pos,count) : String     Mid (string,pos,count) : String     Mid (string,pos,count) : String
  7149.     
  7150.     Returns a string starting at pos for count.
  7151.     
  7152.      Example:
  7153.        Mid('ABCDEFG',2,3) returns 'CDE'
  7154.     
  7155.     Category: String
  7156.     
  7157.     
  7158.      Min (Num,Num) : Num     Min (Num,Num) : Num     Min (Num,Num) : Num
  7159.     
  7160.     Returns the smallest of two numbers or strings.
  7161.     
  7162.      Example:
  7163.        Writeln Min(2,3)     ;returns 2
  7164.     
  7165.     See Also: Max
  7166.     
  7167.     Category: Math String Float
  7168.     
  7169.     
  7170.      MinorDosVersion : Number     MinorDosVersion : Number     MinorDosVersion : Number
  7171.     
  7172.     Returns the minor DOS version number.
  7173.     
  7174.     See Also: DosVersion DosVersionString
  7175.     
  7176.     Category: System
  7177.     
  7178.     
  7179.      Minute : Number     Minute : Number     Minute : Number
  7180.     
  7181.     Returns the current minute.
  7182.     
  7183.     Category: Time
  7184.     
  7185.  
  7186.     Computer Tyme * MarxMenu * Users Manual                 Page #120
  7187.     -----------------------------------------------------------------
  7188.     
  7189.      MinuteOf (Date) : Number     MinuteOf (Date) : Number     MinuteOf (Date) : Number
  7190.     
  7191.     Returns the minute of a date. If Date is passed as a string it is
  7192.     converted automatically.
  7193.     
  7194.      Example:
  7195.        MinuteOf '6:15 pm'  ;returns 15
  7196.     
  7197.     See Also: TimeOf BadDate
  7198.     
  7199.     Category: Time
  7200.     
  7201.     
  7202.      MkDir (String)     MkDir (String)     MkDir (String)
  7203.     
  7204.     Makes a new directory. The FileResult variable returns the DOS result
  7205.     error code. A zero in FileResult indicates success.
  7206.     
  7207.      Example:
  7208.         MkDir 'C:\MARX'
  7209.     
  7210.     See Also: ChDir RmDir
  7211.     
  7212.     Category: File
  7213.     
  7214.     
  7215.      Mod : Operator     Mod : Operator     Mod : Operator
  7216.     
  7217.     Returns the remainder of the division of two numbers.
  7218.     
  7219.      Example:
  7220.        25 mod 7 = 4
  7221.     
  7222.     Category: Math
  7223.     
  7224.     
  7225.      ModifyPath     ModifyPath     ModifyPath
  7226.     
  7227.     The MarxMenu directory should be in the search path. This is because if
  7228.     you change directories, MarxMenu may not be able to find the menu files.
  7229.     MarxMenu will now test the PATH= environment variable before it writes
  7230.     the batch file to execute a program. If the MarxMenu path is not
  7231.     included, MarxMenu will add the path to the Master Environment if it
  7232.     can.
  7233.     
  7234.     If for some reason you don't want to allow MarxMenu to modify the master
  7235.     environment, use the command:
  7236.     
  7237.      ModifyPath Off
  7238.     
  7239.     Category: Environment
  7240.     
  7241.  
  7242.     Computer Tyme * MarxMenu * Users Manual                 Page #121
  7243.     -----------------------------------------------------------------
  7244.     
  7245.      Month : Number     Month : Number     Month : Number
  7246.     
  7247.     Returns current month.
  7248.     
  7249.     Category: Time
  7250.     
  7251.     
  7252.      MonthOf (Date) : Number     MonthOf (Date) : Number     MonthOf (Date) : Number
  7253.     
  7254.     Returns the month of a date. If Date is passed as a string it is
  7255.     converted automatically.
  7256.     
  7257.      Example:
  7258.        MonthOf 'April'   ;returns 4
  7259.     
  7260.     See Also: TimeOf BadDate
  7261.     
  7262.     Category: Time
  7263.     
  7264.     
  7265.      Mouse     Mouse     Mouse
  7266.     
  7267.     MarxMenu normally uses the mouse if present. If you don't want to use
  7268.     the mouse you can use the command:
  7269.     
  7270.      Mouse Off
  7271.     
  7272.     To turn the mouse back on type:
  7273.     
  7274.      Mouse On
  7275.     
  7276.     The mouse is actually switched on and off at the point when MarxMenu
  7277.     waits at the keyboard for a keypress.
  7278.     
  7279.     Mouse Sensitivity can be set for individual workstations on a network by
  7280.     setting environment variables MouseX and MouseY as follows:
  7281.     
  7282.      Set MouseX=15
  7283.      Set MouseY=25
  7284.     
  7285.     See Also: MouseHorizontal MouseVertical
  7286.     
  7287.     Category: MouseControl
  7288.     
  7289.     
  7290.      MouseHorizontal (Number)     MouseHorizontal (Number)     MouseHorizontal (Number)
  7291.     
  7292.     Controls the horizontal sensitivity of the mouse. The larger the number,
  7293.     the less sensitive the mouse. Default is 25.
  7294.     
  7295.      Example:
  7296.        MouseHorizontal = 25
  7297.     
  7298.  
  7299.     Computer Tyme * MarxMenu * Users Manual                 Page #122
  7300.     -----------------------------------------------------------------
  7301.     
  7302.     See Also: MouseVertical Mouse
  7303.     
  7304.     Category: MouseControl
  7305.     
  7306.     
  7307.      MouseVertical (Number)     MouseVertical (Number)     MouseVertical (Number)
  7308.     
  7309.     Controls the vertical sensitivity of the mouse. The larger the number,
  7310.     the less sensitive the mouse. Default is 15.
  7311.     
  7312.      Example:
  7313.        MouseVertical = 15
  7314.     
  7315.     See Also: MouseHorizontal Mouse
  7316.     
  7317.     Category: MouseControl
  7318.     
  7319.     
  7320.      MoveWindow (Horizontal,Vertical)     MoveWindow (Horizontal,Vertical)     MoveWindow (Horizontal,Vertical)
  7321.     
  7322.     Moves top window. If (Horizontal) is negative motion is left. If
  7323.     <Vertical> is negative, motion is up.
  7324.     
  7325.      Example:
  7326.        MoveWindow -3 4 ;moves window 3 spaces left and 4 down
  7327.     
  7328.     Category: Display
  7329.     
  7330.     
  7331.      MsDos (Registers)     MsDos (Registers)     MsDos (Registers)
  7332.     
  7333.     MsDos calls the interrupt 21h system call using values passed in an
  7334.     array of 10 numbers. The array is set up using predefined Qualifiers
  7335.     that represent the registers that are passed. These qualifiers are:
  7336.     
  7337.      AX BX CX DX DI SI DS ES BP FL
  7338.     
  7339.      Example: Get Current Drive
  7340.        var Reg
  7341.        Reg.AX = $1900
  7342.        MsDos(Reg)
  7343.        Writeln Char(LowWord(Reg.AX) + 1) ':'     ;writes C:
  7344.     
  7345.     See Also: Intr
  7346.     
  7347.     Category: System
  7348.     
  7349.  
  7350.     Computer Tyme * MarxMenu * Users Manual                 Page #123
  7351.     -----------------------------------------------------------------
  7352.     
  7353.      MxCmd : String     MxCmd : String     MxCmd : String
  7354.     
  7355.     This is an internal string variable that is written to the environment
  7356.     variable MXCMD. This variable can be written to control what MarxMenu
  7357.     will write to the Shell Environment. If this variable is written to, it
  7358.     overrides anything that MarxMenu automatically writes.
  7359.     
  7360.      Example:
  7361.        OnKey 'A'
  7362.          |MxCmd = 'SHUTDOWN.BAT'
  7363.          |ExitMenu
  7364.     
  7365.     Category: Environment String Execution
  7366.     
  7367.     
  7368.      NamePart (String) : String     NamePart (String) : String     NamePart (String) : String
  7369.     
  7370.     Returns the name part of a file name.
  7371.     
  7372.      Example:
  7373.        NamePart ('C:\MARX\MARXMENU.EXE') ;returns MARXMENU
  7374.     
  7375.     See Also: Extension PathPart FilePart
  7376.     
  7377.     Category: String
  7378.     
  7379.     
  7380.      NetworkVersion : Boolean     NetworkVersion : Boolean     NetworkVersion : Boolean
  7381.     
  7382.     Returns true if you are running the network version of MarxMenu.
  7383.     
  7384.     Category: Misc
  7385.     
  7386.     
  7387.      NextWord (String) : String     NextWord (String) : String     NextWord (String) : String
  7388.     
  7389.     This command returns the next logical word of a string variable and
  7390.     removes the string from the original string.
  7391.     
  7392.      Example:
  7393.        StringA = 'one two three'
  7394.        StringB = NextWord(StringA)
  7395.     
  7396.        StringB contains 'one'
  7397.        StringA contains 'two three'
  7398.     
  7399.     Category: String
  7400.     
  7401.  
  7402.     Computer Tyme * MarxMenu * Users Manual                 Page #124
  7403.     -----------------------------------------------------------------
  7404.     
  7405.      Nil     Nil     Nil
  7406.     
  7407.     Nil returns a zero or empty value for any type data. As a boolean Nil
  7408.     returns False. As a number Nil returns 0. As a string, Nil returns an
  7409.     empty string.
  7410.     
  7411.     Category: Misc
  7412.     
  7413.     
  7414.      NoBoxBorder     NoBoxBorder     NoBoxBorder
  7415.     
  7416.     Use this command if you don't want a border around the menus.
  7417.     
  7418.     See Also: SingleLineBox DoubleLineBox BlockBox CustomBox
  7419.     
  7420.     Category: Display
  7421.     
  7422.     
  7423.      NoExit     NoExit     NoExit
  7424.     
  7425.     Prevents ESC key from allowing you to exit menu. To exit, you must
  7426.     execute the ExitMenu command. This could be password protected.
  7427.     
  7428.     See Also: ExitMenu
  7429.     
  7430.     Category: Execution
  7431.     
  7432.     
  7433.      Not : Operator     Not : Operator     Not : Operator
  7434.     
  7435.     Returns logical Not if operators are boolean; or bitwise Not if
  7436.     operators are numeric.
  7437.     
  7438.      Example:
  7439.        if Not ExistDir('C:\MARX') then Writeln 'Marx not Installed!'
  7440.        Not(0) = -1
  7441.     
  7442.     See Also: And Or Xor
  7443.     
  7444.     Category: Math Boolean
  7445.     
  7446.     
  7447.      NotesLeft : Num     NotesLeft : Num     NotesLeft : Num
  7448.     
  7449.     NotesLeft returns the number of notes left in the music buffer to play.
  7450.     The music buffer is self adjusting and can store days worth of music.
  7451.     
  7452.     Category: Music
  7453.     
  7454.  
  7455.     Computer Tyme * MarxMenu * Users Manual                 Page #125
  7456.     -----------------------------------------------------------------
  7457.     
  7458.      NotesPlayed : Num     NotesPlayed : Num     NotesPlayed : Num
  7459.     
  7460.     Returns the number of notes played. If NotesLeft ever reaches 0,
  7461.     NotesPlayed also is set to 0.
  7462.     
  7463.     Category: Music
  7464.     
  7465.     
  7466.      NovAccountExpDate (UserName) : Date     NovAccountExpDate (UserName) : Date     NovAccountExpDate (UserName) : Date
  7467.     
  7468.     Returns the Novell account expiration date. You must be logged in to be
  7469.     able to read this.
  7470.     
  7471.      Example:
  7472.        DaysToExpire = NovAccountExpDate(UserName) - Today / SecondsInDay
  7473.     
  7474.     Category: Bindery Time
  7475.     
  7476.     
  7477.      NovAddUserToGroup (User,Group)     NovAddUserToGroup (User,Group)     NovAddUserToGroup (User,Group)
  7478.     
  7479.     Adds a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
  7480.     SECURITY_EQUALS properties.
  7481.     
  7482.      Example:
  7483.        NovAddUserToGroup ('MARC','EVERYONE')
  7484.     
  7485.     See Also: NovRemoveUserFromGroup
  7486.     
  7487.     Category: Bindery
  7488.     
  7489.     
  7490.      NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)     NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)     NovAddToSet (Object,Property,ObjectType,MemberObject,MemberType)
  7491.     
  7492.     Adds an object to a property that is a set property.
  7493.     
  7494.      Example: Add a user to a group
  7495.        NovAddToSet(Group,'GROUP_MEMBERS',2,User,1)
  7496.        NovAddToSet(User,"GROUPS_I'M_IN",1,Group,2)
  7497.        NovAddToSet(User,'SECURITY_EQUALS',1,Group,2)
  7498.     
  7499.     See Also: NovDeleteFromSet NovSetProperty
  7500.     
  7501.     Category: Bindery
  7502.     
  7503.     
  7504.      NovAttach (Server)     NovAttach (Server)     NovAttach (Server)
  7505.     
  7506.     NovAttach is used to create a software link between you and a server,
  7507.     usually a second server. It must be followed by a NovLogin command to
  7508.     log you into the server if you want to do anything useful there.
  7509.     
  7510.  
  7511.     Computer Tyme * MarxMenu * Users Manual                 Page #126
  7512.     -----------------------------------------------------------------
  7513.     
  7514.      Example: NovAttach 'TYME'
  7515.     
  7516.     See Also: NovDetach
  7517.     
  7518.     Category: Novell
  7519.     
  7520.     
  7521.      NovAttachedServers (Array)     NovAttachedServers (Array)     NovAttachedServers (Array)
  7522.     
  7523.     Returns a list of servers you are already attached to.
  7524.     
  7525.      Example:
  7526.        var Servers
  7527.        NovAttachedServers(Servers)
  7528.        Loop Servers
  7529.           Writeln Servers[LoopIndex]
  7530.        EndLoop
  7531.     
  7532.     See Also: NovServers
  7533.     
  7534.     Category: Novell Array
  7535.     
  7536.     
  7537.      NovAutoDetach (On/Off)     NovAutoDetach (On/Off)     NovAutoDetach (On/Off)
  7538.     
  7539.     When using MarxMenu to log into a Novell network, MarxMenu will detach
  7540.     from the file server, if NovAutoDetach is on, when the screen blanker kicks
  7541.     in, and reattach when the screen is restored. This keeps the workstation
  7542.     from tying up a connection number while waiting to log in. Default is
  7543.     on.
  7544.     
  7545.     Category: Novell
  7546.     
  7547.     
  7548.      NovBroadcastMode (Mode)     NovBroadcastMode (Mode)     NovBroadcastMode (Mode)
  7549.     
  7550.     This reads or sets the message broadcast mode.
  7551.     
  7552.      Example:
  7553.         Writeln NovBroadcastMode
  7554.         NovBroadcastMode = 3
  7555.     
  7556.      Modes:
  7557.         0 - All Messages, same as running CastOn
  7558.         1 - Server messages only, same as running CastOff
  7559.         2 - Same as 0 but user has to poll server for messages
  7560.         3 - Same as 1 but user has to poll server for messages
  7561.     
  7562.     See Also: NovSendMessage NovGetMessage
  7563.     
  7564.     Category: Novell
  7565.     
  7566.  
  7567.     Computer Tyme * MarxMenu * Users Manual                 Page #127
  7568.     -----------------------------------------------------------------
  7569.     
  7570.      NovCaptureCopies (Port) : Number     NovCaptureCopies (Port) : Number     NovCaptureCopies (Port) : Number
  7571.     
  7572.     NovCaptureCopies reads or sets the number of copies to print for a
  7573.     particular port.
  7574.     
  7575.      Example:
  7576.         NovCaptureCopies (2) = 5      ;Sets LPT2 to print 5 copies
  7577.         Writeln NovCaptureCopies (2)  ;displays the copies setting on LPT2
  7578.     
  7579.     See Also: NovCaptureQueue
  7580.     
  7581.     Category: Novell Printer
  7582.     
  7583.     
  7584.      NovCaptureFF (Port) On/Off     NovCaptureFF (Port) On/Off     NovCaptureFF (Port) On/Off
  7585.     
  7586.     NovCaptureFF reads or sets the printer Form Feed function of a
  7587.     particular port.
  7588.     
  7589.      Example:
  7590.         NovCaptureFF (2) On       ;Sets LPT2 Form Feed to On
  7591.         Writeln NovCaptureFF (2)  ;displays the Form Feed setting on LPT2
  7592.     
  7593.     See Also: NovCaptureQueue
  7594.     
  7595.     Category: Novell Printer
  7596.     
  7597.     
  7598.      NovCaptureForm (Port) : Number     NovCaptureForm (Port) : Number     NovCaptureForm (Port) : Number
  7599.     
  7600.     NovCaptureForm reads or sets the printer form of a particular port.
  7601.     
  7602.      Example:
  7603.         NovCaptureForm (2) = 3      ;Sets LPT2 to form 3
  7604.         Writeln NovCaptureForm (2)  ;displays the form setting on LPT2
  7605.     
  7606.     See Also: NovCaptureQueue
  7607.     
  7608.     Category: Novell Printer
  7609.     
  7610.     
  7611.      NovCaptureQueue (Port)     NovCaptureQueue (Port)     NovCaptureQueue (Port)
  7612.     
  7613.     Returns the name of the queue that the port is being captured to. A nul
  7614.     string indicates capturing is not active. This command can also be used
  7615.     to start capturing and set the queue to capture. A server can also be
  7616.     specified.
  7617.     
  7618.      Example:
  7619.         Writeln NovCaptureQueue (2)    ;shows capture queue for LPT2
  7620.         NovCaptureQueue (2) = 'LASER'  ;captures LPT2 to server Laser Printer
  7621.         NovCaptureQueue (2) = 'TYME/LASER'  ;specifies server TYME
  7622.     
  7623.  
  7624.     Computer Tyme * MarxMenu * Users Manual                 Page #128
  7625.     -----------------------------------------------------------------
  7626.     
  7627.     Category: Novell Printer
  7628.     
  7629.     
  7630.      NovCaptureReset (Port) : String     NovCaptureReset (Port) : String     NovCaptureReset (Port) : String
  7631.     
  7632.     NovCaptureReset can read or set the reset string for a print queue.
  7633.     
  7634.      Example:
  7635.        NovCaptureReset (1) = Esc + char($15)
  7636.        Writeln NovCaptureReset (1) ;reads the capture setup string
  7637.     
  7638.     See Also: NovCaptureSetup
  7639.     
  7640.     Category: Novell Printer
  7641.     
  7642.     
  7643.      NovCaptureSetup (Port) : String     NovCaptureSetup (Port) : String     NovCaptureSetup (Port) : String
  7644.     
  7645.     NovCaptureSetup can read or set the setup string for a print queue.
  7646.     
  7647.      Example:
  7648.        NovCaptureSetup (1) = Esc + char($15)
  7649.        Writeln NovCaptureSetup (1) ;reads the capture setup string
  7650.     
  7651.     See Also: NovCaptureReset
  7652.     
  7653.     Category: Novell Printer
  7654.     
  7655.     
  7656.      NovCaptureTabSize (Port) : number     NovCaptureTabSize (Port) : number     NovCaptureTabSize (Port) : number
  7657.     
  7658.     NovCaptureTabSize reads or sets the printer TabSize of a particular
  7659.     port. Range is 1 - 18.
  7660.     
  7661.      Example:
  7662.         NovCaptureTabSize (2) = 8       ;Sets LPT2 TabSize to 8 spaces
  7663.         Writeln NovCaptureTabSize (2)   ;displays the TabSize setting on LPT2
  7664.     
  7665.     See Also: NovCaptureQueue
  7666.     
  7667.     Category: Novell Printer
  7668.     
  7669.     
  7670.      NovCaptureTimeOut (Port) : number     NovCaptureTimeOut (Port) : number     NovCaptureTimeOut (Port) : number
  7671.     
  7672.     NovCaptureTimeOut reads or sets the printer TimeOut of a particular port.
  7673.     
  7674.      Example:
  7675.         NovCaptureTimeOut (2) = 10      ;Sets LPT2 to 10 second TimeOut
  7676.         Writeln NovCaptureTimeOut (2)   ;displays the TimeOut setting on LPT2
  7677.     
  7678.     See Also: NovCaptureQueue
  7679.     
  7680.  
  7681.     Computer Tyme * MarxMenu * Users Manual                 Page #129
  7682.     -----------------------------------------------------------------
  7683.     
  7684.     Category: Novell Printer
  7685.     
  7686.     
  7687.      NovCaptureUseBanner (Port)     NovCaptureUseBanner (Port)     NovCaptureUseBanner (Port)
  7688.     
  7689.     This reads or sets weather or not a print banner is used.
  7690.     
  7691.      Example:
  7692.         Writeln NovCaptureUseBanner (2)  ;displays if LPT2 is using a banner
  7693.         NovCaptureBanner (2) = On        ;sets banner to on for LPT2
  7694.     
  7695.     See Also: NovCaptureQueue
  7696.     
  7697.     Category: Novell Printer
  7698.     
  7699.     
  7700.      NovChangePassword (OldPassword,NewPassword)     NovChangePassword (OldPassword,NewPassword)     NovChangePassword (OldPassword,NewPassword)
  7701.     
  7702.     Changes the novell users password from OldPassword to NewPassword.
  7703.     
  7704.      Example:
  7705.         NovChangePassword('OLDPASS','NEWPASS')
  7706.     
  7707.     Category: Novell
  7708.     
  7709.     
  7710.      NovCleanVolumeName (String) : String     NovCleanVolumeName (String) : String     NovCleanVolumeName (String) : String
  7711.     
  7712.     Returns a string containing the server and volume name of a file name or
  7713.     directory.
  7714.     
  7715.      Example:
  7716.        Writeln NovCleanVolumeName('L:')   ;Returns 'MARX/SYS:LOGIN'
  7717.     
  7718.     See Also: CleanFileName TrueName
  7719.     
  7720.     Category: Novell
  7721.     
  7722.     
  7723.      NovClearConnection (Connection Number)     NovClearConnection (Connection Number)     NovClearConnection (Connection Number)
  7724.     
  7725.     Disconnects a specific connection number from the server. Requires
  7726.     console operator rights to use this command.
  7727.     
  7728.      Example:
  7729.        NovClearConnection 2
  7730.     
  7731.     Category: Novell
  7732.     
  7733.  
  7734.     Computer Tyme * MarxMenu * Users Manual                 Page #130
  7735.     -----------------------------------------------------------------
  7736.     
  7737.      NovCloseBindery     NovCloseBindery     NovCloseBindery
  7738.     
  7739.     Closes the Novell bindery for access.
  7740.     
  7741.     See Also: NovOpenBindery
  7742.     
  7743.     Category: Bindery
  7744.     
  7745.     
  7746.      NovCloseSemaphore (Name)     NovCloseSemaphore (Name)     NovCloseSemaphore (Name)
  7747.     
  7748.     This closes semaphore Name. If there are no other users using this
  7749.     semaphore, it is deleted.
  7750.     
  7751.      Example:
  7752.        NovCloseSemaphore 'LOTUS'
  7753.     
  7754.     Category: Novell
  7755.     
  7756.     
  7757.      NovConnection : Number     NovConnection : Number     NovConnection : Number
  7758.     
  7759.     This returns the logical connection number to the network. A zero
  7760.     indicates that you are not connected.
  7761.     
  7762.      Example:
  7763.        Writeln 'My connection number is: ' NovConnection
  7764.     
  7765.     Category: Novell
  7766.     
  7767.     
  7768.      NovConnectionsInUse : Number     NovConnectionsInUse : Number     NovConnectionsInUse : Number
  7769.     
  7770.     Returns the number of connections in use.
  7771.     
  7772.      Example:
  7773.        Writeln 'There are ' NovConnections ' connections in use.'
  7774.     
  7775.     Category: Novell
  7776.     
  7777.     
  7778.      NovConsoleOperator : Boolean     NovConsoleOperator : Boolean     NovConsoleOperator : Boolean
  7779.     
  7780.     This returns true if the user has Console Operator priviledges. This can
  7781.     come in handy when you are trying to determine who gets access to the
  7782.     command line.
  7783.     
  7784.      Example:
  7785.        OnKey Esc
  7786.          |if NovConsoleOperator
  7787.          |   ExitMenu
  7788.          |endif
  7789.     
  7790.  
  7791.     Computer Tyme * MarxMenu * Users Manual                 Page #131
  7792.     -----------------------------------------------------------------
  7793.     
  7794.     Category: Novell
  7795.     
  7796.     
  7797.      NovCreateObject (Name, ObjectType)     NovCreateObject (Name, ObjectType)     NovCreateObject (Name, ObjectType)
  7798.     
  7799.     Creates a bindery object of a specific object type. If NovStaticObject
  7800.     is set to true, then the object will be permanent unless it is deleted.
  7801.     If set to false, then the object will be automatically deleted if the
  7802.     file server is rebooted.
  7803.     
  7804.      Example:
  7805.      NovStaticObject Off              ;make property dynamic
  7806.      NovObjectSecurity $13            ;logged in read, supervisor write
  7807.      NovCreateObject ('MARXMENU',600) ;create the property
  7808.     
  7809.     NovObjectSecurity controls who can access the object. The default
  7810.     security is $11 which allows anyone logged into the network to access
  7811.     the object for both read and write.
  7812.     
  7813.     See Also: NovStaticObject NovObjectSecurity NovDeleteObject
  7814.     
  7815.     Category: Bindery
  7816.     
  7817.     
  7818.      NovCreateProperty (Object, Property, ObjectType)     NovCreateProperty (Object, Property, ObjectType)     NovCreateProperty (Object, Property, ObjectType)
  7819.     
  7820.     Creates a property on the object. The security of the property is
  7821.     controlled by setting the variable NovPropertySecurity. You can also
  7822.     control if the property is an item property or a set property. This is
  7823.     done by setting NovSetProperty to True or False.
  7824.     
  7825.     If NovStaticProperty is true then the property will remain until someone
  7826.     deletes it. If it is not static (dynamic) then it will be deleted if the
  7827.     server is rebooted.
  7828.     
  7829.     A set property contains a list of objects. An item property contains a
  7830.     value up to 128 bytes long. The value can be anything.
  7831.     
  7832.      Example:
  7833.      NovSetProperty On             ;use set property
  7834.      NovStaticProperty Off         ;make property dynamic
  7835.      NovPropertySecurity $13       ;logged in read, supervisor write
  7836.      NovCreateProperty ('MARXMENU','USERS',600) ;create the property
  7837.     
  7838.     See Also: NovStaticProperty NovPropertySecurity NovDeleteProperty
  7839.     
  7840.     Category: Bindery
  7841.     
  7842.  
  7843.     Computer Tyme * MarxMenu * Users Manual                 Page #132
  7844.     -----------------------------------------------------------------
  7845.     
  7846.      NovDefaultServer : String     NovDefaultServer : String     NovDefaultServer : String
  7847.     
  7848.     Returns the name of the default file server.
  7849.     
  7850.      Example:
  7851.        Writeln NovDefaultServer
  7852.     
  7853.     Category: Novell
  7854.     
  7855.     
  7856.      NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)     NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)     NovDeleteFromSet (Object,Property,ObjectType,MemberObject,MemberType)
  7857.     
  7858.     Deletes an object from a property that is a set property.
  7859.     
  7860.      Example: Remove a user to a group
  7861.         NovDeleteFromSet(Group,'GROUP_MEMBERS',2,User,1)
  7862.         NovDeleteFromSet(User,"GROUPS_I'M_IN",1,Group,2)
  7863.         NovDeleteFromSet(User,'SECURITY_EQUALS',1,Group,2)
  7864.     
  7865.     See Also: NovAddToSet NovSetProperty
  7866.     
  7867.     Category: Bindery
  7868.     
  7869.     
  7870.      NovDeleteObject (Object,Type)     NovDeleteObject (Object,Type)     NovDeleteObject (Object,Type)
  7871.     
  7872.     Deletes an object from the bindery.
  7873.     
  7874.      Example:
  7875.        NovDeleteObject ('JOE',1)
  7876.     
  7877.     Category: Bindery
  7878.     
  7879.     
  7880.      NovDeleteProperty (Obj,Prop,Type)     NovDeleteProperty (Obj,Prop,Type)     NovDeleteProperty (Obj,Prop,Type)
  7881.     
  7882.     NovDeleteProperty deletes a property from an object.
  7883.     
  7884.      Example:
  7885.        NovDeleteProperty('TEST','WASTE',2)
  7886.     
  7887.     Category: Bindery
  7888.     
  7889.     
  7890.      NovDetach (Server)     NovDetach (Server)     NovDetach (Server)
  7891.     
  7892.     This is used to drop the connection to a server. It also logs you off.
  7893.     
  7894.      Example:
  7895.        NovDetach 'TYME'
  7896.     
  7897.     See Also: NovAttach
  7898.     
  7899.  
  7900.     Computer Tyme * MarxMenu * Users Manual                 Page #133
  7901.     -----------------------------------------------------------------
  7902.     
  7903.     Category: Novell
  7904.     
  7905.     
  7906.      NovDownServer     NovDownServer     NovDownServer
  7907.     
  7908.     Takes the default file server down if there are no files open.
  7909.     
  7910.     See Also: NovForceDownServer
  7911.     
  7912.     Category: Novell
  7913.     
  7914.     
  7915.      NovEndCapture (Port)     NovEndCapture (Port)     NovEndCapture (Port)
  7916.     
  7917.     Ends printer capture for LPT ports.
  7918.     
  7919.      Example:
  7920.         NovEndCapture (1)  ;cancels LPT1 capture
  7921.     
  7922.     See Also: NovCaptureQueue
  7923.     
  7924.     Category: Novell Printer
  7925.     
  7926.     
  7927.      NovFreeDirSlots (Path) : Number     NovFreeDirSlots (Path) : Number     NovFreeDirSlots (Path) : Number
  7928.     
  7929.     Returns the number of free directory slots for this volume.
  7930.     
  7931.      Example:
  7932.        Writeln NovFreeDirSlots 'SYS:'
  7933.        Writeln NovFreeDirSlots 'F:'
  7934.     
  7935.     See Also: NovTotalDirSlots
  7936.     
  7937.     Category: Novell
  7938.     
  7939.     
  7940.      NovFreeVolumeSpace (Path) : Number     NovFreeVolumeSpace (Path) : Number     NovFreeVolumeSpace (Path) : Number
  7941.     
  7942.     Returns the free file space of the volume in bytes.
  7943.     
  7944.      Example:
  7945.        Writeln NovFreeVolumeSpace 'SYS:'
  7946.        Writeln NovFreeVolumeSpace 'F:'
  7947.     
  7948.     See Also: NovTotalVolumeSpace
  7949.     
  7950.     Category: Novell
  7951.     
  7952.  
  7953.     Computer Tyme * MarxMenu * Users Manual                 Page #134
  7954.     -----------------------------------------------------------------
  7955.     
  7956.      NovForceDownServer     NovForceDownServer     NovForceDownServer
  7957.     
  7958.     Takes the default file server down regardless of open files.
  7959.     
  7960.     See Also: NovDownServer
  7961.     
  7962.     Category: Novell
  7963.     
  7964.     
  7965.      NovFullName (User)     NovFullName (User)     NovFullName (User)
  7966.     
  7967.     Returns the Full Name of the user as set by syscon. If NovFullName is
  7968.     used without a parameter then MyLoginName is assumed.
  7969.     
  7970.      Example:
  7971.        Writeln NovFullName 'MARC'  ;Writes Marc Perkel
  7972.     
  7973.     See Also: NovLoginName
  7974.     
  7975.     Category: Bindery
  7976.     
  7977.     
  7978.      NovGetConnections (Array,Name,Type)     NovGetConnections (Array,Name,Type)     NovGetConnections (Array,Name,Type)
  7979.     
  7980.     NovGetConnections return an array of connection numbers that a specified
  7981.     user or other object is attached to. For users use type 1.
  7982.     
  7983.      Example:
  7984.        var Connections
  7985.        NovGetConnections(Connections,'VICKI',1)
  7986.        Loop Connections
  7987.           NovSendMessage('The Princess Called!',Connections[LoopIndex])
  7988.        EndLoop
  7989.     
  7990.     Category: Bindery
  7991.     
  7992.     
  7993.      NovGetMessage : String     NovGetMessage : String     NovGetMessage : String
  7994.     
  7995.     When in broadcast mode 2 or 3 this polls the server for stored messages
  7996.     and returns them if found.
  7997.     
  7998.      Example:
  7999.        NovBroadcastMode = 3
  8000.        Writeln NovGetMessage
  8001.     
  8002.     See Also: NovSendMessage NovBroadcastMode
  8003.     
  8004.     Category: Novell
  8005.     
  8006.  
  8007.     Computer Tyme * MarxMenu * Users Manual                 Page #135
  8008.     -----------------------------------------------------------------
  8009.     
  8010.      NovGraceLoginReset (User) : Num     NovGraceLoginReset (User) : Num     NovGraceLoginReset (User) : Num
  8011.     
  8012.     Returns the number of grace logins that Novell resets when the user
  8013.     changes his password.
  8014.     
  8015.      Example:
  8016.         Writeln NovGraceLoginReset (NovMyLoginName)
  8017.     
  8018.     If the User parameter is not included, MarxMenu will assume the current
  8019.     user.
  8020.     
  8021.     See Also: NovGraceLogins
  8022.     
  8023.     Category: Bindery
  8024.     
  8025.     
  8026.      NovGraceLogins (User) : Num     NovGraceLogins (User) : Num     NovGraceLogins (User) : Num
  8027.     
  8028.     Returns the number of grace logins the user has left.
  8029.     
  8030.      Example:
  8031.         Writeln 'You have ' NovGraceLogins (NovMyLoginName) ' left!'
  8032.     
  8033.     If the User parameter is not included, MarxMenu will assume the current
  8034.     user.
  8035.     
  8036.     See Also: NovPasswordExpDate NovGraceLoginReset
  8037.     
  8038.     Category: Bindery
  8039.     
  8040.     
  8041.      NovGroupsMembers (Group,Array)     NovGroupsMembers (Group,Array)     NovGroupsMembers (Group,Array)
  8042.     
  8043.     This reads all the members of Group and puts them into an array.
  8044.     
  8045.      Example:
  8046.        var Members
  8047.        NovGroupMembers ('EVERYONE',Members)
  8048.        Loop Members
  8049.           Writeln Members[LoopIndex]
  8050.        EndLoop
  8051.     
  8052.     Category: Bindery Array
  8053.     
  8054.     
  8055.      NovGroups (Array)     NovGroups (Array)     NovGroups (Array)
  8056.     
  8057.     Fills array with list of all groups.
  8058.     
  8059.      Example:
  8060.        var Groups
  8061.        NovGroups (Groups)
  8062.        Loop Groups
  8063.           Writeln Groups[LoopIndex]
  8064.        EndLoop
  8065.     
  8066.  
  8067.     Computer Tyme * MarxMenu * Users Manual                 Page #136
  8068.     -----------------------------------------------------------------
  8069.     
  8070.     See Also: NovUsersLoggedIn NovUsers NovPrintQueues NovServers
  8071.     
  8072.     Category: Bindery
  8073.     
  8074.     
  8075.      NovInGroup (Group) : Boolean     NovInGroup (Group) : Boolean     NovInGroup (Group) : Boolean
  8076.     
  8077.     Returns true if you are in the group.
  8078.     
  8079.      Example:
  8080.        If NovInGroup ('PAYROLL') then Writeln 'Accounting'
  8081.     
  8082.     Category: Bindery
  8083.     
  8084.     
  8085.      NovLastLoginDate (User) : Date     NovLastLoginDate (User) : Date     NovLastLoginDate (User) : Date
  8086.     
  8087.     Returns the date the user last logged in.
  8088.     
  8089.      Example:
  8090.         DaysSinceLogin = NovLastLoginDate(UserName) - Today / SecondsInDay
  8091.     
  8092.     If the User parameter is not included, MarxMenu will assume the current
  8093.     user.
  8094.     
  8095.     Category: Bindery Time
  8096.     
  8097.     
  8098.      NovLogin (Name,Password)     NovLogin (Name,Password)     NovLogin (Name,Password)
  8099.     
  8100.     This logs you into a file server. It is different than the Novell's
  8101.     login program in that it doesn't execute any login scripts. It merely
  8102.     gets you in. You can include the preferred server with the name.
  8103.     
  8104.      Example:
  8105.         NovLogin ('MARC','PASSWORD')
  8106.         NovLogin ('TYME/MARC','PASSWORD')
  8107.     
  8108.     NovLogin will automatically attach to the file server for you and
  8109.     preserve all default and preferred server settings.
  8110.     
  8111.     The variable NovResult is set to 0 or 223 if successful. The 223 result
  8112.     indicated a grace login.
  8113.     
  8114.     Note: If you are using Netware 3.0 or 3.1 you will have to go to the
  8115.     server console and type:
  8116.     
  8117.      SET ALLOW UNENCRYPTED PASSWORDS = ON
  8118.     
  8119.     See Also: NovDetach
  8120.     
  8121.  
  8122.     Computer Tyme * MarxMenu * Users Manual                 Page #137
  8123.     -----------------------------------------------------------------
  8124.     
  8125.     Category: Novell
  8126.     
  8127.     
  8128.      NovLoginName (Connection) : String     NovLoginName (Connection) : String     NovLoginName (Connection) : String
  8129.     
  8130.     This returns the login name of the user at any specified connection.
  8131.     This can also be used to see who else is on the network. If no
  8132.     connection is specified, the current connection is assumed.
  8133.     
  8134.      Example:
  8135.        Writeln NovLoginName       ;name of user on this connection
  8136.        Writeln NovLoginName (2)   ;name of user on connection 2
  8137.     
  8138.     See Also: NovFullName
  8139.     
  8140.     Category: Bindery
  8141.     
  8142.     
  8143.      NovLogout     NovLogout     NovLogout
  8144.     
  8145.     This logs you off the server. Warning! Make sure that you are running
  8146.     MarxMenu from a local drive and not the server you are logging out of.
  8147.     MarxMenu needs access to overlays within MARXMENU.EXE and a Logout can
  8148.     cut off access. This command automatically runs FixPath.
  8149.     
  8150.     See Also: FixPath Logoff LogoffTime
  8151.     
  8152.     Category: Novell Vines
  8153.     
  8154.     
  8155.      NovMapDrive (Drive,Directory)     NovMapDrive (Drive,Directory)     NovMapDrive (Drive,Directory)
  8156.     
  8157.     This will map a drive letter to a directory like the Novell MAP
  8158.     command does. You may specify volume names and server names.
  8159.     
  8160.      Example:
  8161.        NovMapDrive ('J','TYME2/SYS:PUBLIC\DOS')
  8162.     
  8163.     Mapping a drive to a nul string ('') deletes the drive map.
  8164.     
  8165.     See Also: NovMapRoot
  8166.     
  8167.     Category: Novell
  8168.     
  8169.     
  8170.      NovMapRoot (Drive,Path)     NovMapRoot (Drive,Path)     NovMapRoot (Drive,Path)
  8171.     
  8172.     NovMapRoot works like Novell's MAP ROOT command. It allows you to map a
  8173.     drive letter to a subdirectory and make it look like the root directory
  8174.     of that drive. You may specify volume names and server names.
  8175.     
  8176.      Example:
  8177.         NovMapRoot('P','TYME/SYS:PUBLIC')
  8178.         ; P:\ is the same as the TYME/SYS:PUBLIC directory
  8179.     
  8180.  
  8181.     Computer Tyme * MarxMenu * Users Manual                 Page #138
  8182.     -----------------------------------------------------------------
  8183.     
  8184.     See Also: NovMapDrive
  8185.     
  8186.     Category: Novell
  8187.     
  8188.     
  8189.      NovMaxConnections : Number     NovMaxConnections : Number     NovMaxConnections : Number
  8190.     
  8191.     Returns the maximum number of connections that your netware will allow.
  8192.     
  8193.     Category: Novell
  8194.     
  8195.     
  8196.      NovMinPasswordLength (User) : Num     NovMinPasswordLength (User) : Num     NovMinPasswordLength (User) : Num
  8197.     
  8198.     Returns the minimum length of the password that Novell will accept for a
  8199.     new password.
  8200.     
  8201.      Example:
  8202.         Writeln NovGraceLoginReset (NovMyLoginName)
  8203.     
  8204.     If the User parameter is not included, MarxMenu will assume the current
  8205.     user.
  8206.     
  8207.     Category: Bindery
  8208.     
  8209.     
  8210.      NovMyLoginName : String     NovMyLoginName : String     NovMyLoginName : String
  8211.     
  8212.     This returns the login name of the user.
  8213.     
  8214.      Example:
  8215.        Writeln NovMyLoginName
  8216.     
  8217.     Category: Bindery
  8218.     
  8219.     
  8220.      NovMyPassword (Password) : Boolean     NovMyPassword (Password) : Boolean     NovMyPassword (Password) : Boolean
  8221.     
  8222.     Novell won't let you read the password, but it will let you guess and
  8223.     tell you if you're right. This routine returns true if the password
  8224.     passed is the correct password.
  8225.     
  8226.      Example"
  8227.        var Pass
  8228.        Pass = Readln
  8229.        if NovMyPassword (Pass)
  8230.           <Do Something>
  8231.        else
  8232.           Writeln 'Bad Password!'
  8233.        endif
  8234.     
  8235.     Category: Bindery
  8236.     
  8237.  
  8238.     Computer Tyme * MarxMenu * Users Manual                 Page #139
  8239.     -----------------------------------------------------------------
  8240.     
  8241.      NovMyPrintQueues (Array)     NovMyPrintQueues (Array)     NovMyPrintQueues (Array)
  8242.     
  8243.     Returns a list of all print queues that the user has access too.
  8244.     
  8245.      Example:
  8246.        var Queues
  8247.        NovMyPrintQueues (Queues)
  8248.        Loop Queues
  8249.           Writeln Queues[LoopIndex]
  8250.        EndLoop
  8251.     
  8252.     See Also: NovPrintQueues
  8253.     
  8254.     Category: Bindery Array
  8255.     
  8256.     
  8257.      NovObjectID (User) : String     NovObjectID (User) : String     NovObjectID (User) : String
  8258.     
  8259.     NovObjectID returns the users novell object identification code. This is
  8260.     the same as the name of the users mail directory.
  8261.     
  8262.      Example:
  8263.        MailDir = 'F:\MAIL\' + NovObjectID (NovMyLoginName)
  8264.     
  8265.     Category: Bindery
  8266.     
  8267.     
  8268.      NovObjects (2D Array)     NovObjects (2D Array)     NovObjects (2D Array)
  8269.     
  8270.     NovObjects reads all objects from the bindery returning a 2 dimensional
  8271.     array containing all object names and object types.
  8272.     
  8273.      Example:
  8274.        NovObjects (X)
  8275.        Loop X
  8276.           Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
  8277.        EndLoop
  8278.     
  8279.      Common Object Types:
  8280.        1 - User
  8281.        2 - Group
  8282.        3 - Print Queue
  8283.        4 - File Server
  8284.        5 - Job Server
  8285.        6 - Gateway
  8286.        7 - Print Server
  8287.     
  8288.     See Also: NovScanProperties NovPropertyValues
  8289.     
  8290.     Category: Bindery Array
  8291.     
  8292.  
  8293.     Computer Tyme * MarxMenu * Users Manual                 Page #140
  8294.     -----------------------------------------------------------------
  8295.     
  8296.      NovObjectSecurity : Number     NovObjectSecurity : Number     NovObjectSecurity : Number
  8297.     
  8298.     NovObjectSecurity is used when objects are created to determine who can
  8299.     read or write the object. The number is one byte. The upper 4 bits
  8300.     controls who can read the object, the lower 4 bits control who can write
  8301.     to the object.
  8302.     
  8303.       0000 Anyone
  8304.       0001 Logged In
  8305.       0010 Only your Object
  8306.       0011 Supervisor
  8307.       0100 Netware Itself
  8308.     
  8309.     The default is $11 (00010001) which is anyone logged in can read or
  8310.     write to the object.
  8311.     
  8312.     NovObjectSecurity can also read and set the security of an existing
  8313.     object.
  8314.     
  8315.      Example:
  8316.        NovObjectSecurity('MARXMENU',600) = $13
  8317.        Writeln NovObjectSecurity('MARXMENU',600)
  8318.     
  8319.     See Also: NovCreateObject NovStaticObject NovPropertySecurity
  8320.     
  8321.     Category: Bindery
  8322.     
  8323.     
  8324.      NovOpenBindery     NovOpenBindery     NovOpenBindery
  8325.     
  8326.     Opens the Novell bindery for access.
  8327.     
  8328.     See Also: NovCloseBindery
  8329.     
  8330.     Category: Bindery
  8331.     
  8332.     
  8333.      NovOpenSemaphore (Name,Value)     NovOpenSemaphore (Name,Value)     NovOpenSemaphore (Name,Value)
  8334.     
  8335.     This opens semaphore Name and assigns it an initial value. If the
  8336.     semaphore already exists, the value isn't changed. The number of
  8337.     semaphore users is increased by one if this user hasn't already opened
  8338.     this semaphore name.
  8339.     
  8340.      Example:
  8341.        NovOpenSemaphore ('LOTUS',0)
  8342.     
  8343.     See Also: NovCloseSemaphore NovSemaphoreUsers
  8344.     
  8345.     Category: Novell
  8346.     
  8347.  
  8348.     Computer Tyme * MarxMenu * Users Manual                 Page #141
  8349.     -----------------------------------------------------------------
  8350.     
  8351.      NovPasswordExpDate (UserName) : Date     NovPasswordExpDate (UserName) : Date     NovPasswordExpDate (UserName) : Date
  8352.     
  8353.     Returns the Novell password expiration date. You must be logged in to be
  8354.     able to read this.
  8355.     
  8356.      Example:
  8357.         DaysToExpire = NovPasswordExpDate(UserName) - Today / SecondsInDay
  8358.     
  8359.     See Also: NovGraceLogins
  8360.     
  8361.     Category: Bindery Time
  8362.     
  8363.     
  8364.      NovPreferredServer : String     NovPreferredServer : String     NovPreferredServer : String
  8365.     
  8366.     Returns the name of the preferred file server. This is set with the
  8367.     NovSetPreferredServer command.
  8368.     
  8369.     Normally the default server is controlled by the current directory. If a
  8370.     preferred server is set then this default is changed. Setting the
  8371.     preferred server to blank resets the default server. When MarxMenu
  8372.     terminates the Preferred server setting is terminated.
  8373.     
  8374.     Category: Novell
  8375.     
  8376.     
  8377.      NovPrimaryServer : String     NovPrimaryServer : String     NovPrimaryServer : String
  8378.     
  8379.     Returns the name of the primary file server. This is the one you first
  8380.     logged into.
  8381.     
  8382.     Category: Novell
  8383.     
  8384.     
  8385.      NovPrintQueues (Array)     NovPrintQueues (Array)     NovPrintQueues (Array)
  8386.     
  8387.     Fills array with list of all print Queues. The user might not have
  8388.     access rights to all these queues.
  8389.     
  8390.      Example:
  8391.        var Queues
  8392.        NovPrintQueues (Queues)
  8393.        Loop Queues
  8394.           Writeln Queues[LoopIndex]
  8395.        EndLoop
  8396.     
  8397.     See Also: NovMyPrintQueues NovUsersLoggedIn NovUsers
  8398.     See Also: NovGroups NovServers
  8399.     
  8400.     Category: Bindery Array Printer
  8401.     
  8402.  
  8403.     Computer Tyme * MarxMenu * Users Manual                 Page #142
  8404.     -----------------------------------------------------------------
  8405.     
  8406.      NovPropertySecurity : Number     NovPropertySecurity : Number     NovPropertySecurity : Number
  8407.     
  8408.     NovPropertySecurity is used when properties are created to determine who
  8409.     can read or write the property. The number is one byte. The upper 4 bits
  8410.     controls who can read the property, the lower 4 bits control who can
  8411.     write to the property.
  8412.     
  8413.       0000 Anyone
  8414.       0001 Logged In
  8415.       0010 Only your Object
  8416.       0011 Supervisor
  8417.       0100 Netware Itself
  8418.     
  8419.     The default is $11 (00010001) which is anyone logged in can read or
  8420.     write to the property.
  8421.     
  8422.     NovPropertySecurity can also read and set the security of an existing
  8423.     property.
  8424.     
  8425.      Example:
  8426.        NovPropertySecurity('MARXMENU','USERS',600) = $13
  8427.        Writeln NovPropertySecurity('MARXMENU',USERS',600)
  8428.     
  8429.     See Also: NovCreateProperty NovObjectSecurity NovSetProperty
  8430.     
  8431.     Category: Bindery
  8432.     
  8433.     
  8434.      NovPropertyValues (Array, Object, Property, Type)     NovPropertyValues (Array, Object, Property, Type)     NovPropertyValues (Array, Object, Property, Type)
  8435.     
  8436.     Reads property values of object into and array. If the property is a Set
  8437.     property, then the names of the objects contained in the set are read.
  8438.     If the property is an Item property, then the property is read as an
  8439.     array of strings that are all 128 bytes in length. These strings will
  8440.     contain binary data.
  8441.     
  8442.      Example:       ;shows contents of bindery
  8443.        StandardIO
  8444.     
  8445.        Var Objects, Obj, Prop, Ty, Values
  8446.     
  8447.        Qualifier ObjName ObjType
  8448.     
  8449.        NovObjects (Objects)
  8450.     
  8451.        Loop Objects
  8452.           Obj = Objects[LoopIndex].ObjName
  8453.           Ty = Objects[LoopIndex].ObjType
  8454.           Writeln Obj ' --------- ' Ty
  8455.           NovScanProperties (Prop,Obj,Ty)
  8456.           Loop Prop
  8457.              Writeln '   ' Prop[LoopIndex]
  8458.              NovPropertyValues(Values,Obj,Prop[LoopIndex],Ty)
  8459.              Loop Values
  8460.                 Writeln '      ' Values[LoopIndex]
  8461.              EndLoop
  8462.           EndLoop
  8463.  
  8464.     Computer Tyme * MarxMenu * Users Manual                 Page #143
  8465.     -----------------------------------------------------------------
  8466.     
  8467.        EndLoop
  8468.     
  8469.     See Also: NovObjects NovScanProperties NovWritePropValue
  8470.     
  8471.     Category: Bindery Array
  8472.     
  8473.     
  8474.      NovReadGroups (User,Array)     NovReadGroups (User,Array)     NovReadGroups (User,Array)
  8475.     
  8476.     This reads all the groups that User belongs to and puts them into an
  8477.     array.
  8478.     
  8479.      Example:
  8480.        var Groups
  8481.        NovReadGroups ('VICKI',Groups)
  8482.        Loop Groups
  8483.           Writeln Groups[LoopIndex]
  8484.        EndLoop
  8485.     
  8486.     Category: Bindery Array
  8487.     
  8488.     
  8489.      NovReadSecurityEquals (Name,Array)     NovReadSecurityEquals (Name,Array)     NovReadSecurityEquals (Name,Array)
  8490.     
  8491.     This reads all the security equivalences that Name belongs to and puts
  8492.     them into an array. (This includes groups).
  8493.     
  8494.      Example:
  8495.        var SecEq
  8496.        NovReadSecurityEquals ('VICKI',SecEq)
  8497.        Loop SecEq
  8498.           Writeln SecEq[LoopIndex]
  8499.        EndLoop
  8500.     
  8501.     Category: Bindery Array
  8502.     
  8503.     
  8504.      NovRemoveUserFromGroup (User,Group)     NovRemoveUserFromGroup (User,Group)     NovRemoveUserFromGroup (User,Group)
  8505.     
  8506.     Removes a user to a group and updates GROUPS_I'M_IN, GROUP_MEMBERS, and
  8507.     SECURITY_EQUALS properties.
  8508.     
  8509.      Example:
  8510.        NovRemoveUserFromGroup ('MARC','EVERYONE')
  8511.     
  8512.     See Also: NovAddUserToGroup
  8513.     
  8514.     Category: Bindery
  8515.     
  8516.  
  8517.     Computer Tyme * MarxMenu * Users Manual                 Page #144
  8518.     -----------------------------------------------------------------
  8519.     
  8520.      NovRenameObject (OldName, NewName, ObjectType)     NovRenameObject (OldName, NewName, ObjectType)     NovRenameObject (OldName, NewName, ObjectType)
  8521.     
  8522.     Renames an object.
  8523.     
  8524.      Example:
  8525.        NovRenameObject('VICKY','VICKI',1)
  8526.          ;corrects serious spelling error
  8527.     
  8528.     Category: Bindery
  8529.     
  8530.     
  8531.      NovResult : Number     NovResult : Number     NovResult : Number
  8532.     
  8533.     NovResult is a variable like FileResult that returns the success status
  8534.     of the previous Novell system call. A zero generally indicates success.
  8535.     
  8536.     Category: Novell
  8537.     
  8538.     
  8539.      NovScanProperties (Array, Object, ObjectType)     NovScanProperties (Array, Object, ObjectType)     NovScanProperties (Array, Object, ObjectType)
  8540.     
  8541.     NovScanProperties reads the properties (not the values) into an array.
  8542.     You also have to pass the object type.
  8543.     
  8544.      Novell Object Types:
  8545.        1 - User
  8546.        2 - Group
  8547.        3 - Print Queue
  8548.        4 - File Server
  8549.        5 - Job Server
  8550.        6 - Gateway
  8551.        7 - Print Server
  8552.     
  8553.      Example:
  8554.        var Properties
  8555.        NovScanProperties (Properties,NovMyLoginName,1)
  8556.     
  8557.        Loop NumberOfElements(Properties)
  8558.           Writeln(Properties[LoopIndex])
  8559.        EndLoop
  8560.     
  8561.     See Also: NovObjects NovPropertyValues
  8562.     
  8563.     Category: Bindery Array
  8564.     
  8565.  
  8566.     Computer Tyme * MarxMenu * Users Manual                 Page #145
  8567.     -----------------------------------------------------------------
  8568.     
  8569.      NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)     NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)     NovScanTrusteePaths (2D Array,ObjectNane,ObjectType)
  8570.     
  8571.     Returns a 2 dimensional array containing the name of the trustee paths
  8572.     assigned to the object and the trustee access rights.
  8573.     
  8574.      Example:
  8575.        var X
  8576.        NovScanTrusteePaths (X,'MARC',1)
  8577.        Loop X
  8578.           Writeln X[LoopIndex,1] ' ' X[LoopIndex,2]
  8579.        EndLoop
  8580.     
  8581.     Category: Novell Array
  8582.     
  8583.     
  8584.      NovSecurityEquals (Security) : Boolean     NovSecurityEquals (Security) : Boolean     NovSecurityEquals (Security) : Boolean
  8585.     
  8586.     Returns True if user has the security equivalent of Security.
  8587.     
  8588.      Example:
  8589.         if NovSecurityEquals ('SUPERVISOR')
  8590.            Execute ('SYSCON')
  8591.         endif
  8592.     
  8593.     Category: Bindery
  8594.     
  8595.     
  8596.      NovSemaphoreTimeout     NovSemaphoreTimeout     NovSemaphoreTimeout
  8597.     
  8598.     This variable controls the amount of time (in 1/18 seconds) that
  8599.     MarxMenu will wait for the value of a semaphore to become not negative.
  8600.     The initial value is 50.
  8601.     
  8602.      Example:
  8603.        NovSemaphoreTimeout = 50
  8604.     
  8605.     See Also: NovWaitOnSemaphore NovSignalSemaphore
  8606.     
  8607.     Category: Novell
  8608.     
  8609.     
  8610.      NovSemaphoreUsers (Name) : Number     NovSemaphoreUsers (Name) : Number     NovSemaphoreUsers (Name) : Number
  8611.     
  8612.     This returns the number of users that have the semaphore open. This can
  8613.     be used for software metering. Read file METER.INC to use this feature.
  8614.     
  8615.      Example:
  8616.        if NovSemaphoreUsers ('LOTUS') > 5
  8617.           Writeln 'Sorry, all copies of LOTUS are in use.'
  8618.        endif
  8619.     
  8620.  
  8621.     Computer Tyme * MarxMenu * Users Manual                 Page #146
  8622.     -----------------------------------------------------------------
  8623.     
  8624.     Category: Novell
  8625.     
  8626.     
  8627.      NovSemaphoreValue (Name) : Number     NovSemaphoreValue (Name) : Number     NovSemaphoreValue (Name) : Number
  8628.     
  8629.     This returns the value of a semaphore. The value is initially set with
  8630.     NovOpenSemaphore and can be adjusted with NovSignalSemaphore or
  8631.     NovWaitOnSemaphore.
  8632.     
  8633.      Example:
  8634.        Writeln NamSemaphoreValue
  8635.     
  8636.     See Also: NovOpenSemaphore NovSignalSemaphore NovWaitOnSemaphore
  8637.     
  8638.     Category: Novell
  8639.     
  8640.     
  8641.      NovServerLogin (On/Off)     NovServerLogin (On/Off)     NovServerLogin (On/Off)
  8642.     
  8643.     Enables or disables logins to file server. This requires the user have
  8644.     Console Operator status to use this feature.
  8645.     
  8646.      Example:
  8647.        if NovConsoleOperator then NovServerLogin Off
  8648.     
  8649.     Category: Novell
  8650.     
  8651.     
  8652.      NovServers (Array)     NovServers (Array)     NovServers (Array)
  8653.     
  8654.     This command returns a string array of the file servers you are
  8655.     connected to.
  8656.     
  8657.      Example:
  8658.        var Servers
  8659.        NovServers(Servers)
  8660.        Loop Servers
  8661.           Writeln Servers[LoopIndex]
  8662.        EndLoop
  8663.     
  8664.     Category: Bindery Array
  8665.     
  8666.     
  8667.      NovServerTime : Time     NovServerTime : Time     NovServerTime : Time
  8668.     
  8669.     NovServerTime can read or set the date and time of a Novell file server.
  8670.     
  8671.      To read the server time:
  8672.         X = ServerTime
  8673.     
  8674.      To set the server time:
  8675.         ServerTime = X
  8676.     
  8677.  
  8678.     Computer Tyme * MarxMenu * Users Manual                 Page #147
  8679.     -----------------------------------------------------------------
  8680.     
  8681.     Category: Novell Time
  8682.     
  8683.     
  8684.      NovSendMessage (Message,Connection)     NovSendMessage (Message,Connection)     NovSendMessage (Message,Connection)
  8685.     
  8686.     Sends a message to the specified connection number just like the novell
  8687.     SEND command.
  8688.     
  8689.      NovResults:
  8690.           0 - Successful
  8691.         252 - Buffer Full
  8692.         253 - Invalid Connection Number
  8693.         255 - Blocked (running CastOff)
  8694.     
  8695.     See Also: NovGetMessage NovBroadcastMode
  8696.     
  8697.     Category: Novell
  8698.     
  8699.     
  8700.      NovSetPreferredServer (Server)     NovSetPreferredServer (Server)     NovSetPreferredServer (Server)
  8701.     
  8702.     Sets the preferred file server. Passing a '' will switch you back to the
  8703.     default or primary file server.
  8704.     
  8705.     See Also: NovSetPrimaryServer NovPreferredServer
  8706.     
  8707.     Category: Novell
  8708.     
  8709.     
  8710.      NovSetPrimaryServer (Server)     NovSetPrimaryServer (Server)     NovSetPrimaryServer (Server)
  8711.     
  8712.     The primary file server is the one that executes your login scripts. It
  8713.     can also be set using the NovSetPrimaryServer command.
  8714.     
  8715.     See Also: NovSetPreferredServer NovPrimaryServer
  8716.     
  8717.     Category: Novell
  8718.     
  8719.     
  8720.      NovSetProperty (On/Off)     NovSetProperty (On/Off)     NovSetProperty (On/Off)
  8721.     
  8722.     NovSetProperty is a variable that controls if the property to be created
  8723.     is going to be a set property or an item property.
  8724.     
  8725.     A set property contains a list of objects. An item property contains a
  8726.     value up to 128 bytes long. The value can be anything.
  8727.     
  8728.     NovSetProperty can also be used to read if a property is an item or a
  8729.     set.
  8730.     
  8731.      Example:
  8732.      if NovSetProperty (Object,Property,ObjectType)
  8733.         NovPropertyValues(Values,Object,Property,ObjectType)
  8734.         Loop Values
  8735.            Writeln Values[LoopIndex]
  8736.         EndLoop
  8737.      endif
  8738.     
  8739.  
  8740.     Computer Tyme * MarxMenu * Users Manual                 Page #148
  8741.     -----------------------------------------------------------------
  8742.     
  8743.     See Also: NovPropertySecurity NovCreateProperty NovStaticProperty
  8744.     
  8745.     Category: Bindery
  8746.     
  8747.     
  8748.      NovSignalSemaphore (Name)     NovSignalSemaphore (Name)     NovSignalSemaphore (Name)
  8749.     
  8750.     This increments the value of a semaphore. It is used to indicate that
  8751.     you are done with a resource and makes it available for the next user.
  8752.     
  8753.     See Also: NovOpenSemaphore NovWaitOnSemaphore
  8754.     
  8755.     Category: Novell
  8756.     
  8757.     
  8758.      NovStaticObject : Boolean     NovStaticObject : Boolean     NovStaticObject : Boolean
  8759.     
  8760.     This variable controls if objects created will be static or dynamic
  8761.     objects. Dynamic objects are deleted when the file server is rebooted.
  8762.     
  8763.     NovStaticObject can also be used to read if an object is static or not.
  8764.     
  8765.      Example:
  8766.         Writeln NovStaticObject('MARXMENU,600)  ;test for static object
  8767.     
  8768.     See Also: NovCreateObject NovObjectSecurity
  8769.     
  8770.     Category: Bindery
  8771.     
  8772.     
  8773.      NovStaticProperty : Boolean     NovStaticProperty : Boolean     NovStaticProperty : Boolean
  8774.     
  8775.     This variable controls if objects created will be static or dynamic
  8776.     objects. Dynamic objects are deleted when the file server is rebooted.
  8777.     
  8778.     NovStaticProperty can also be used to read if an property is static or
  8779.     not.
  8780.     
  8781.      Example:
  8782.         Writeln NovStaticProperty('MARXMENU,'USERS',600)
  8783.     
  8784.     See Also: NovCreateProperty NovPropertySecurity
  8785.     
  8786.     Category: Bindery
  8787.     
  8788.     
  8789.      NovStationAddress (Connection) : String     NovStationAddress (Connection) : String     NovStationAddress (Connection) : String
  8790.     
  8791.     This returns the stations internetwork address at connection.
  8792.     
  8793.      Example:
  8794.        NovStationAddress (NovConnection)
  8795.           Returns the address of the users workstation.
  8796.     
  8797.  
  8798.     Computer Tyme * MarxMenu * Users Manual                 Page #149
  8799.     -----------------------------------------------------------------
  8800.     
  8801.        NovStationAddress (1)
  8802.           Returns the address of station 1.
  8803.     
  8804.        254:41 where 254 is the network number and 41 is the node number.
  8805.     
  8806.     The second parameter (Connection) is optional. If it is left out, the
  8807.     current connection is assumed.
  8808.     
  8809.      Example:
  8810.        NovStationAddress ;Returns the address of the users workstation.
  8811.     
  8812.     Category: Novell
  8813.     
  8814.     
  8815.      NovTotalDirSlots (Path) : Number     NovTotalDirSlots (Path) : Number     NovTotalDirSlots (Path) : Number
  8816.     
  8817.     Returns the total number of directory slots for this volume.
  8818.     
  8819.      Example:
  8820.        Writeln NovTotalDirSlots 'SYS:'
  8821.        Writeln NovTotalDirSlots 'F:'
  8822.     
  8823.     See Also: NovFreeDirSlots
  8824.     
  8825.     Category: Novell
  8826.     
  8827.     
  8828.      NovTotalVolumeSpace (Path) : Number     NovTotalVolumeSpace (Path) : Number     NovTotalVolumeSpace (Path) : Number
  8829.     
  8830.     Returns the total file space of the volume in bytes.
  8831.     
  8832.      Example:
  8833.        Writeln NovTotalVolumeSpace 'SYS:'
  8834.        Writeln NovTotalVolumeSpace 'F:'
  8835.     
  8836.     See Also: NovFreeVolumeSpace
  8837.     
  8838.     Category: Novell
  8839.     
  8840.     
  8841.      NovUserInGroup (Name,Group) : Boolean     NovUserInGroup (Name,Group) : Boolean     NovUserInGroup (Name,Group) : Boolean
  8842.     
  8843.     This is used to test if other users are in a group. Returns true is the
  8844.     specified user is in the specified group.
  8845.     
  8846.      Example:
  8847.        if NovUserInGroup ('KEVIN','MAILUSERS')
  8848.           <do something>
  8849.        endif
  8850.     
  8851.     See Also: NovInGroup
  8852.     
  8853.  
  8854.     Computer Tyme * MarxMenu * Users Manual                 Page #150
  8855.     -----------------------------------------------------------------
  8856.     
  8857.     Category: Bindery
  8858.     
  8859.     
  8860.      NovUsers (Array)     NovUsers (Array)     NovUsers (Array)
  8861.     
  8862.     Fills array with list of all users.
  8863.     
  8864.      Example:
  8865.        var Users
  8866.        NovUsers(Users)
  8867.        Loop Users
  8868.           Writeln Users[LoopIndex]
  8869.        EndLoop
  8870.     
  8871.     See Also: NovUsersLoggedIn NovGroups NovPrintQueues NovServers
  8872.     
  8873.     Category: Bindery Array
  8874.     
  8875.     
  8876.      NovUsersLoggedIn (Array)     NovUsersLoggedIn (Array)     NovUsersLoggedIn (Array)
  8877.     
  8878.     Fills array with list of all users that are currently logged in.
  8879.     
  8880.      Example:
  8881.        var Users
  8882.        NovUsersLoggedIn(Users)
  8883.        Loop Users
  8884.           Writeln Users[LoopIndex]
  8885.        EndLoop
  8886.     
  8887.     See Also: NovUsers NovGroups NovPrintQueues NovServers
  8888.     
  8889.     Category: Novell Array
  8890.     
  8891.     
  8892.      NovVersionNumber : Number     NovVersionNumber : Number     NovVersionNumber : Number
  8893.     
  8894.     Returns the novell netware version number.
  8895.     
  8896.     Category: Novell
  8897.     
  8898.     
  8899.      NovVolumeNumber (Directory) : Number     NovVolumeNumber (Directory) : Number     NovVolumeNumber (Directory) : Number
  8900.     
  8901.     Returns the Novell volume number of a directory.
  8902.     
  8903.      Example:
  8904.        Writeln NovVolumeNumber ('F:')
  8905.     
  8906.     Category: Novell
  8907.     
  8908.  
  8909.     Computer Tyme * MarxMenu * Users Manual                 Page #151
  8910.     -----------------------------------------------------------------
  8911.     
  8912.      NovVolumes (Array)     NovVolumes (Array)     NovVolumes (Array)
  8913.     
  8914.     Reads volumes on the default server into an array.
  8915.     
  8916.      Example:
  8917.        var X
  8918.        NovVolumes(X)
  8919.        Loop NumberOfElements(X)
  8920.           Writeln X[LoopIndex]
  8921.        EndLoop
  8922.     
  8923.     Category: Novell Array
  8924.     
  8925.     
  8926.      NovWaitOnSemaphore (Name) : Boolean     NovWaitOnSemaphore (Name) : Boolean     NovWaitOnSemaphore (Name) : Boolean
  8927.     
  8928.     This decrements the value of a semaphore and if the value is zero or
  8929.     more, returns true. If the value of the semaphore is negative, it
  8930.     returns false. This is used to indicate that you are out of whatever you
  8931.     are testing for.
  8932.     
  8933.     See Also: NovSignalSemaphore NovOpenSemaphore NovSemaphoreTimeout
  8934.     
  8935.     Category: Novell
  8936.     
  8937.     
  8938.      NovWritePropValue (Array,Obj,Prop,Type)     NovWritePropValue (Array,Obj,Prop,Type)     NovWritePropValue (Array,Obj,Prop,Type)
  8939.     
  8940.     NovWritePropValue is used to write values to Item properties only and
  8941.     not to static properties. Item properties contain data in 128 byte
  8942.     segments. These segments are passed as an array of strings. If you are
  8943.     passing binary data then build the binary data into the string array.
  8944.     Any strings that have less than 128 bytes are padded with zeros.
  8945.     
  8946.      Example:
  8947.        AppendArray(Values,'123')
  8948.        AppendArray(Values,'456')
  8949.        AppendArray(Values,'789')
  8950.        NovWritePropValue(Values,'TEST','WASTE',2)
  8951.     
  8952.     See Also: NovPropertyValues
  8953.     
  8954.     Category: Bindery
  8955.     
  8956.     
  8957.      NumberOfElememts (array) : Number     NumberOfElememts (array) : Number     NumberOfElememts (array) : Number
  8958.     
  8959.     This function returns the number of elements in the array. If the
  8960.     variable is not an array, 0 is returned.
  8961.     
  8962.      Example:
  8963.         var Lines
  8964.         ReadTextFile('MARXREAD.ME',Lines)
  8965.         Writeln 'The file is ' NumberofElements (Lines) ' lines long.'
  8966.     
  8967.  
  8968.     Computer Tyme * MarxMenu * Users Manual                 Page #152
  8969.     -----------------------------------------------------------------
  8970.     
  8971.     Category: Array
  8972.     
  8973.     
  8974.      Now : Time     Now : Time     Now : Time
  8975.     
  8976.     Returns the current moment or sets the system clock.
  8977.     
  8978.      Read the current moment:
  8979.         X = Now
  8980.      Set the system clock:
  8981.         Now = X
  8982.     
  8983.     See Also: Today Tomorrow
  8984.     
  8985.     Category: Time
  8986.     
  8987.     
  8988.      NumLock : Boolean     NumLock : Boolean     NumLock : Boolean
  8989.     
  8990.     Returns true if Num Lock is on. This command can also set the Num Lock
  8991.     on and off.
  8992.     
  8993.      Example:
  8994.        if NumLock then Write 'NumLock is On'
  8995.     
  8996.        NumLock On  ;Turns NumLock On
  8997.        NumLock Off ;Turns NumLock Off
  8998.     
  8999.        NumLock (by itself) turns NumLock On.
  9000.     
  9001.        To test for NumLock:
  9002.        if NumLock
  9003.           <do something>
  9004.        endif
  9005.     
  9006.     See Also: CapsLock ScrollLock
  9007.     
  9008.     Category: System
  9009.     
  9010.     
  9011.      Offset (String) : Number     Offset (String) : Number     Offset (String) : Number
  9012.     
  9013.     Returns the memory offset where string is located.
  9014.     
  9015.     See Also: Segment
  9016.     
  9017.     Category: Memory
  9018.     
  9019.  
  9020.     Computer Tyme * MarxMenu * Users Manual                 Page #153
  9021.     -----------------------------------------------------------------
  9022.     
  9023.      OnKey (char)     OnKey (char)     OnKey (char)
  9024.     
  9025.     When char is selected, the line(s) following are executed up to the next
  9026.     OnKey or end of file. This means that they are written to a BATCH file.
  9027.     
  9028.      Example:
  9029.        Onkey 'W'
  9030.        cd\wordstar
  9031.        ws
  9032.        cd\menu
  9033.     
  9034.     In the above example if 'W' is selected, MarxMenu will create a
  9035.     temporary batch file containing all the lines under the OnKey command.
  9036.     All the lines under an OnKey are written literally to the batch file
  9037.     with few exceptions. All leading and trailing blanks are stripped.
  9038.     String variables are evaluated and their value passed if the name of the
  9039.     string variable name starts with a '%'.
  9040.     
  9041.     If a line begins with a '|' (vertical bar), the line is interpreted
  9042.     rather than written to a batch file. If a '^Label' is used under an
  9043.     OnKey, a jump is made to the 'Label' and interpretation is resumed. This
  9044.     is commonly used to jump to a submenu.
  9045.     
  9046.     Any OnKey statement that causes a batch file to be written to will cause
  9047.     the menu to exit. MarxMenu normally will exit with ErrorLevel 0 unless
  9048.     an ExitCode is set.
  9049.     
  9050.     The first blank line under an OnKey ends what is written to the batch
  9051.     file. One common mistake is that when MarxMenu commands are intermixed
  9052.     with batch file statements that all the MarxMenu commands are executed
  9053.     first. This is because the batch statements are written to a batch file
  9054.     and executed when MarxMenu exist.
  9055.     
  9056.      Example:
  9057.        OnKey 'W'
  9058.          |ChDir('c:\wordstar')
  9059.          WS
  9060.          |ChDir('c:\menu')
  9061.     
  9062.     The above example won't work. Here's why. MarxMenu changes to the
  9063.     c:\wordstar directory. Then it stores WS in a batch file buffer. Then is
  9064.     changes to the c:\menu directory. Then MarxMenu writes the batch file
  9065.     and exits and you are in the wrong directory.
  9066.     
  9067.     Here is an example of using conditional statements under an OnKey
  9068.     command:
  9069.     
  9070.      Example:
  9071.        OnKey 'S'
  9072.          |if DisplayType = 'HERCMONO'
  9073.             |ChDir('C:\MONSMART')
  9074.             SMART
  9075.          |else
  9076.             |ChDir('C:\COLSMART')
  9077.             SMART
  9078.          |endif
  9079.  
  9080.     Computer Tyme * MarxMenu * Users Manual                 Page #154
  9081.     -----------------------------------------------------------------
  9082.     
  9083.     
  9084.     In the above example MarxMenu tests to see if a color compatible screen
  9085.     is available. If so it runs SMART out of the color directory. Otherwise
  9086.     it runs SMART out of the mono directory. Note that all commands that
  9087.     MarxMenu sees start with the vertical bar character.
  9088.     
  9089.     Sometimes you want to execute a command where the command is created by
  9090.     a complex set of rules. The BAT command is useful here.
  9091.     
  9092.      Example:
  9093.        OnKey 'P'
  9094.          |Bat 'CAPTURE Q=' + Queue + ' C=1 NB NFF TI=5 Local=' + PrnPort
  9095.     
  9096.     In this example the |Bat command allows to more specific control over
  9097.     what is sent to the batch file for execution.
  9098.     
  9099.     See Also: MxCmd Bat UseArrows OnScreenOnly
  9100.     
  9101.     Category: Conditional
  9102.     
  9103.     
  9104.      OnScreenOnly (On/Off)     OnScreenOnly (On/Off)     OnScreenOnly (On/Off)
  9105.     
  9106.     This allows you to restrict selections to only what is actually on the
  9107.     screen. Hidden OnKey commands will not execute if this is set on. This
  9108.     allows you to limit user selection to the choices on the screen.
  9109.     
  9110.      Example:
  9111.         OnScreenOnly On
  9112.     
  9113.     See Also: OnKey
  9114.     
  9115.     Category: Conditional
  9116.     
  9117.     
  9118.      OpenPrinter     OpenPrinter     OpenPrinter
  9119.     
  9120.     This command opens the printer device. It is not necessary to use this
  9121.     command in that it is done automatically whenever you print. But, if you
  9122.     are running under a multitasking shell like Windows or DesqView, it will
  9123.     reserve the printer for your task.
  9124.     
  9125.     If the printer is locked, or if you have specified a file name that
  9126.     can't be created, the variable FileResult will contain the DOS error
  9127.     code (usually 5 for access denied). A FileResult of 0 indicates success.
  9128.     
  9129.     See Also: ClosePrinter FileResult PrinterName
  9130.     
  9131.     Category: Printer
  9132.     
  9133.  
  9134.     Computer Tyme * MarxMenu * Users Manual                 Page #155
  9135.     -----------------------------------------------------------------
  9136.     
  9137.      OptionSwitch (String1,String2) : Boolean     OptionSwitch (String1,String2) : Boolean     OptionSwitch (String1,String2) : Boolean
  9138.     
  9139.     This command tests if String1 contains the option switch String2. If it
  9140.     does, it will remove the switch from String1.
  9141.     
  9142.      Example:
  9143.        String1 = 'Test /A/B/C'
  9144.        HasB = OptionSwitch(String1,'B')
  9145.     
  9146.      HasB will be true.
  9147.      String1 will contain 'Test /A/C'
  9148.     
  9149.     Category: String
  9150.     
  9151.     
  9152.      Or : Operator     Or : Operator     Or : Operator
  9153.     
  9154.     Returns logical Or if operators are boolean; or bitwise Or if operators
  9155.     are numeric.
  9156.     
  9157.      Example:
  9158.        if (B < 9) or (C > 5) then .....  ;boolean or
  9159.        X or $0F                          ;bitwise or
  9160.     
  9161.     See Also: And Xor Not
  9162.     
  9163.     Category: Math Boolean
  9164.     
  9165.     
  9166.      Ord (Char) : Number     Ord (Char) : Number     Ord (Char) : Number
  9167.     
  9168.     Returns the numeric value of an ascii character.
  9169.     
  9170.      Example:
  9171.        Ord('A')            ;returns 65
  9172.        Char(Ord('A') + 1)  ;returns 'C'
  9173.     
  9174.     See Also: Char
  9175.     
  9176.     Category: String
  9177.     
  9178.     
  9179.      OutFile : String     OutFile : String     OutFile : String
  9180.     
  9181.     When using StandardIO the input and output files by default use the
  9182.     console. The output can be overridden by setting InFife to point to a
  9183.     different file or device.
  9184.     
  9185.      Example:
  9186.         OutFile = 'OUPTUT.TXT'
  9187.         StandardIO
  9188.     
  9189.  
  9190.     Computer Tyme * MarxMenu * Users Manual                 Page #156
  9191.     -----------------------------------------------------------------
  9192.     
  9193.     See Also: InFile StandardIO
  9194.     
  9195.     Category: File
  9196.     
  9197.     
  9198.      OverKey : String     OverKey : String     OverKey : String
  9199.     
  9200.     When using UseArrows, OverKey returns the character that selects the
  9201.     item that the inverse bar is over.
  9202.     
  9203.     This can be used with IdleProgram to display context sensitive help as
  9204.     you move the inverse bar over different selections.
  9205.     
  9206.     See Also: IdleProgram
  9207.     
  9208.     Category: String
  9209.     
  9210.     
  9211.      OverLay (MenuName)     OverLay (MenuName)     OverLay (MenuName)
  9212.     
  9213.     Overlay loads another menu as if that menu were a procedure of the
  9214.     current menu. After the overlaid menu exits, control is returned to the
  9215.     calling menu at the next line after the overlay command.
  9216.     
  9217.     Like the Chain command, Overlay is very fast and doesn't require
  9218.     MarxMenu to be reloaded.
  9219.     
  9220.      Example:
  9221.        Overlay 'SUBMENU'
  9222.     
  9223.     When using overlays, all variables declared as shared are accessable to
  9224.     the main program and all overlays. The shared variables have to be the
  9225.     same for all overlays.
  9226.     
  9227.     See Also: Shared Chain
  9228.     
  9229.     Category: Execution
  9230.     
  9231.     
  9232.      PadLeft (String,Length) : String     PadLeft (String,Length) : String     PadLeft (String,Length) : String
  9233.     
  9234.     PadLeft will return String filled with blanks on the left side so the
  9235.     the length of the string is Length.
  9236.     
  9237.      Example:
  9238.        Writeln PadLeft('123',5)   ;returns '  123'
  9239.     
  9240.     See Also: PadRight
  9241.     
  9242.     Category: String
  9243.     
  9244.  
  9245.     Computer Tyme * MarxMenu * Users Manual                 Page #157
  9246.     -----------------------------------------------------------------
  9247.     
  9248.      PadRight (String,Length) : String     PadRight (String,Length) : String     PadRight (String,Length) : String
  9249.     
  9250.     PadRight will return String filled with blanks on the right side so the
  9251.     the length of the string is Length.
  9252.     
  9253.      Example:
  9254.        Writeln PadRight('123',5)   ;returns '123  '
  9255.     
  9256.     See Also: PadLeft
  9257.     
  9258.     Category: String
  9259.     
  9260.     
  9261.      ParallelPorts : Number     ParallelPorts : Number     ParallelPorts : Number
  9262.     
  9263.     Returns number of parallel ports.
  9264.     
  9265.     Category: System
  9266.     
  9267.     
  9268.      ParamStr (Num) : String     ParamStr (Num) : String     ParamStr (Num) : String
  9269.     
  9270.     Returns the DOS parameter string from the command line. The 0 parameter
  9271.     is MARXMENU.EXE. The 1 parameter is the name of the menu file you are
  9272.     using. This is like the %1 %2 %3 ... in batch file parameters.
  9273.     
  9274.     Category: String
  9275.     
  9276.     
  9277.      ParentEnvironment     ParentEnvironment     ParentEnvironment
  9278.     
  9279.     ParentEnvironment selects the parent environment for use with
  9280.     environment access commands.
  9281.     
  9282.     See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
  9283.     See Also: CurrentEnvironment MasterEnvironment
  9284.     
  9285.     Category: Environment
  9286.     
  9287.     
  9288.      Password (Pswd,column,row)     Password (Pswd,column,row)     Password (Pswd,column,row)
  9289.     
  9290.     This command opens up a password box at row and column. The user must
  9291.     type the password correctly before the command will execute.
  9292.     
  9293.      Example:
  9294.        OnKey 'X'
  9295.           |PassWord('shell',4,3)
  9296.           COMMAND.COM
  9297.     
  9298.     The password is case sensitive if the password in the source code is
  9299.     lower case. But if the password in the source code is in uppercase then
  9300.     the password is not case sensitive.
  9301.     
  9302.  
  9303.     Computer Tyme * MarxMenu * Users Manual                 Page #158
  9304.     -----------------------------------------------------------------
  9305.     
  9306.      Example:
  9307.         Password 'CRITTER' 4 3    ;will accept critter or CRITTER
  9308.         Password 'CriTTeR' 4 3    ;will only accept CriTTeR
  9309.     
  9310.     Category: Conditional
  9311.     
  9312.     
  9313.      Path : String     Path : String     Path : String
  9314.     
  9315.     Returns the current path.
  9316.     
  9317.      Example:
  9318.        Writeln Path     ;returns 'C:\MARX'
  9319.     
  9320.     Category: String
  9321.     
  9322.     
  9323.      PathPart (String) : String     PathPart (String) : String     PathPart (String) : String
  9324.     
  9325.     Returns the path part of a file name.
  9326.     
  9327.      Example:
  9328.        PathPart ('C:\MARX\MARXMENU.EXE') ;returns C:\MARX
  9329.     
  9330.     See Also: Extension NamePart FilePart
  9331.     
  9332.     Category: String
  9333.     
  9334.     
  9335.      PauseAfterExecute (On/Off)     PauseAfterExecute (On/Off)     PauseAfterExecute (On/Off)
  9336.     
  9337.     If on, this command causes the message "Press any key to return to
  9338.     MarxMenu..." to appear after an execute command is executed.
  9339.     
  9340.     See Also: Execute
  9341.     
  9342.     Category: Execution
  9343.     
  9344.     
  9345.      Pi : Real     Pi : Real     Pi : Real
  9346.     
  9347.     Returns the value of Pi to 18 digits.
  9348.     
  9349.     Category: Math Float
  9350.     
  9351.     
  9352.      PickFile (FileSpec,column,row,height) : String     PickFile (FileSpec,column,row,height) : String     PickFile (FileSpec,column,row,height) : String
  9353.     
  9354.     Allows you to display a directory of files on the screen from a menu.
  9355.     Normally used to display a list of files for the user to choose from.
  9356.     Could be used in a command to load a word processor or database. Allows
  9357.     selection of the file to be loaded by the word processor or database
  9358.     program. The filename can be passed to a percent variable placed in the
  9359.     batch file executing the application. See example files on MarxMenu
  9360.     distribution disk.
  9361.     
  9362.  
  9363.     Computer Tyme * MarxMenu * Users Manual                 Page #159
  9364.     -----------------------------------------------------------------
  9365.     
  9366.      Example: FileName = PickFile('C:\WORDSTAR\*.DOC',3,4,17)
  9367.     
  9368.     Notice: The use of a variable with a name that starts with a '%' allows
  9369.     the choice to be passed to a batch file for execution.
  9370.     
  9371.     The three numbers represent the column and row of the upper left corner
  9372.     of the box and the height of the box. All DrawBox commands can be used
  9373.     here to control the looks of the PickFile window. This includes the
  9374.     BoxHeader command.
  9375.     
  9376.     Category: String
  9377.     
  9378.     
  9379.      PickMany(SourceArray,DestinationArray)     PickMany(SourceArray,DestinationArray)     PickMany(SourceArray,DestinationArray)
  9380.     
  9381.     PickMany displays a string array in the current window and allows you to
  9382.     choose as many lines as you want. The chosen lines go into
  9383.     DestinationArray.
  9384.     
  9385.     When the window appears, the space bar toggles the marked status of the
  9386.     line. The right arrow sets the marked status and the left arrow resets
  9387.     the marked status. Ctrl-Right-Arrow marks all lines, Ctrl-Left-Arrow
  9388.     unmarks all lines. The return key accepts the selection and exits. The
  9389.     ESC key aborts.
  9390.     
  9391.     If using a mouse, the left button toggles the mark on the current line.
  9392.     The right button accepts and exits.
  9393.     
  9394.     If no selections are made by marking selections then pressing Return on
  9395.     and entry selects the item the cursor bar is over. If ESC is pressed,
  9396.     the DestinationArray is left unchanged. You can test LastKey to see what
  9397.     was pressed.
  9398.     
  9399.     See Also: PickManyPositions PickOne
  9400.     
  9401.     Category: String Array
  9402.     
  9403.     
  9404.      PickManyPositions (Array)     PickManyPositions (Array)     PickManyPositions (Array)
  9405.     
  9406.     After running PickMany and array PickManyPositions is created the has
  9407.     the position numbers in the original array that were chosen.
  9408.     
  9409.     See Also: PickMany
  9410.     
  9411.     Category: String Array
  9412.     
  9413.  
  9414.     Computer Tyme * MarxMenu * Users Manual                 Page #160
  9415.     -----------------------------------------------------------------
  9416.     
  9417.      PickOne (Array) : String     PickOne (Array) : String     PickOne (Array) : String
  9418.     
  9419.     This command displays an array in the current window and lets you pick a
  9420.     line and returns the chosen line.
  9421.     
  9422.      Example:
  9423.        var BatFiles, BatName
  9424.        ReadDirectory('*.BAT,BatFiles)
  9425.        DrawBox 35 10 20 9
  9426.        BatName = PickOne(BatFiles)
  9427.     
  9428.     See Also: PickMany PickPosition
  9429.     
  9430.     Category: String Array
  9431.     
  9432.     
  9433.      PickPosition : Number     PickPosition : Number     PickPosition : Number
  9434.     
  9435.     The variable PickPosition works with the PickOne command. PickPosition
  9436.     returns the number of which element in the array was picked.
  9437.     
  9438.     See Also: PickOne
  9439.     
  9440.     Category: String Array
  9441.     
  9442.     
  9443.      Port (number) : Number     Port (number) : Number     Port (number) : Number
  9444.     
  9445.     Returns the value at the port or writes a number to a port.
  9446.     
  9447.      Example:
  9448.        X = Port(20)   ;Reads port 20 into X
  9449.        Port(20) = X   ;Writes X to Port 20
  9450.     
  9451.     Category: Memory
  9452.     
  9453.     
  9454.      Pos (substring,string) : Number     Pos (substring,string) : Number     Pos (substring,string) : Number
  9455.     
  9456.     Finds position of substring in string. If substring isn't found, Pos
  9457.     returns 0.
  9458.     
  9459.      Example:
  9460.         pos('CD','ABCDE') returns 2
  9461.     
  9462.     Category: String
  9463.     
  9464.  
  9465.     Computer Tyme * MarxMenu * Users Manual                 Page #161
  9466.     -----------------------------------------------------------------
  9467.     
  9468.      PosInList (String,Array) : Number     PosInList (String,Array) : Number     PosInList (String,Array) : Number
  9469.     
  9470.     Scans a string array looking for a match on string and returns the array
  9471.     index of the first matched string if found or a zero if not found.
  9472.     
  9473.      Example:
  9474.         X[1] = 'JOE'
  9475.         X[2] = 'KEVIN'
  9476.         X[3] = 'MARC'
  9477.         Writeln PosInList('KEVIN',X)   ;returns 2
  9478.     
  9479.     See Also: PosInSortedList
  9480.     
  9481.     Category: Array
  9482.     
  9483.     
  9484.      PosInSortedList (String,Array) : Number     PosInSortedList (String,Array) : Number     PosInSortedList (String,Array) : Number
  9485.     
  9486.     Scans a string array looking for a match on string in a sorted array and
  9487.     returns the array index of the first matched string if found or a zero
  9488.     if not found. The array must be in sorted order. A binary search is used
  9489.     to make this command very fast.
  9490.     
  9491.      Example:
  9492.         X[1] = 'JOE'
  9493.         X[2] = 'KEVIN'
  9494.         X[3] = 'MARC'
  9495.         SortArray (X)
  9496.         Writeln PosInList('KEVIN',X)   ;returns 2
  9497.     
  9498.     See Also: PosInList
  9499.     
  9500.     Category: Array
  9501.     
  9502.     
  9503.      Power (Real,Real) : Real     Power (Real,Real) : Real     Power (Real,Real) : Real
  9504.     
  9505.     Raises a real to a given power.
  9506.     
  9507.      Example: Power(3,4)  ;returns 81.0
  9508.     
  9509.     Category: Math Float
  9510.     
  9511.     
  9512.      Pred (number) : Number     Pred (number) : Number     Pred (number) : Number
  9513.     
  9514.     Returns number minus 1.
  9515.     
  9516.      Example:
  9517.        Pred(5)  ;returns 4
  9518.     
  9519.  
  9520.     Computer Tyme * MarxMenu * Users Manual                 Page #162
  9521.     -----------------------------------------------------------------
  9522.     
  9523.     See Also: Succ
  9524.     
  9525.     Category: Math
  9526.     
  9527.     
  9528.      Print (string)     Print (string)     Print (string)
  9529.     
  9530.     Prints string to the printer with no CR or LF. If there is an error
  9531.     printing, the error is returned in FileResult.
  9532.     
  9533.      Example:
  9534.        Print Char(12)  ;prints a form feed
  9535.     
  9536.     Category: Printer
  9537.     
  9538.     
  9539.      PrinterName (string)     PrinterName (string)     PrinterName (string)
  9540.     
  9541.     Sets the file name for the printer to use. The default name is PRN.
  9542.     Other common printer names include: LPT1, LPT2, LPT3, and AUX. You can
  9543.     also use filenames to direct printer output to a file.
  9544.     
  9545.     See Also: ClosePrinter OpenPrinter
  9546.     
  9547.     Category: Printer
  9548.     
  9549.     
  9550.      Println (String)     Println (String)     Println (String)
  9551.     
  9552.     Prints string to the printer with CR and LF.
  9553.     
  9554.     See Also: Print
  9555.     
  9556.     Category: Printer
  9557.     
  9558.     
  9559.      PrintScreen (On/Off)     PrintScreen (On/Off)     PrintScreen (On/Off)
  9560.     
  9561.     Turns the print screen function on and off. Turning the print screen off
  9562.     disables the print screen key. This can be used to prevent a computer
  9563.     from locking up when the user hits the Print Screen key with no printer
  9564.     attached.
  9565.     
  9566.      Example:
  9567.        PrintScreen Off
  9568.     
  9569.     Category: Printer
  9570.     
  9571.  
  9572.     Computer Tyme * MarxMenu * Users Manual                 Page #163
  9573.     -----------------------------------------------------------------
  9574.     
  9575.      Procedure (name)     Procedure (name)     Procedure (name)
  9576.     
  9577.     This word begins the definition of a newly named procedure. A procedure
  9578.     is like a subroutine. Once the procedure is defined, all you have to do
  9579.     to call the procedure is use its name. The procedure definition is
  9580.     terminated by the command EndProc.
  9581.     
  9582.      Example:
  9583.     
  9584.      Procedure SelectFile
  9585.        BoxHeaderColor ForeColor BackColor
  9586.        BoxBorderColor Cyan Mag
  9587.        BoxInsideColor Yellow Mag
  9588.        InverseColor Yellow Red
  9589.        Return PickFile (FileType,4,5,17)
  9590.      EndProc
  9591.     
  9592.     Whenever we use the word SelectFile in the menu, all the lines of the
  9593.     procedure SelectFile will execute.
  9594.     
  9595.     Parameters can be passed to procedures. When a parameter is passed it is
  9596.     normally bassed by value. This mean that a copy of the original is
  9597.     passed. Whatever you do to the copy doesn't affect the original value.
  9598.     
  9599.      Example:
  9600.      var A
  9601.      Procedure Square (X)
  9602.         X = X * X
  9603.         Writeln X
  9604.      EndProc
  9605.     
  9606.      A = 6
  9607.      Square (A)   ;prints 36
  9608.      Writeln A    ;prints 6
  9609.     
  9610.     In the above example Square (A) will write 36 but Writeln A will write
  9611.     6. The reason is that Square passes a copy of A to X but the value of X
  9612.     is not returned to A. If you want the original A to be affected you
  9613.     would use the Loc command.
  9614.     
  9615.      A = 6
  9616.      Square (Loc A) ;prints 36
  9617.      Writeln A      ;prints 36
  9618.     
  9619.     In this example we pas Loc A to the Square procedure. Thus, instead of X
  9620.     being set to 6, X is set to point to A. As a pointer, any operation
  9621.     performed on X is performed on A instead.
  9622.     
  9623.  
  9624.     Computer Tyme * MarxMenu * Users Manual                 Page #164
  9625.     -----------------------------------------------------------------
  9626.     
  9627.     You can also return parameters from procedures using the Return command.
  9628.     
  9629.      Example:
  9630.        Procedure Cube (X)
  9631.           Return X * X * X
  9632.        EndProc
  9633.     
  9634.        Writeln Cube(3)    ;returns 27
  9635.     
  9636.     In MarxMenu you can return any number of parameters as long as the
  9637.     calling procedure is expecting the same number of parameters.
  9638.     
  9639.      Example:
  9640.        Procedure CenterOfScreen
  9641.           Return (ScreenWidth / 2) (ScreenHeight / 2)
  9642.        EndProc
  9643.     
  9644.        GotoXY(CenterOfScreen)
  9645.     
  9646.     In the above example, GotoXY expects two parameters. CenterOfScreen
  9647.     returns two parameters so MarxMenu is happy with it.
  9648.     
  9649.     See Also: EndProc Return Loc
  9650.     
  9651.     Category: Misc
  9652.     
  9653.     
  9654.      PullMenu (on/off)     PullMenu (on/off)     PullMenu (on/off)
  9655.     
  9656.     Controls the behavior of the left and right arrow keys when using pull
  9657.     down menus. Default is Off. See PULL.MNU for example.
  9658.     
  9659.     Category: Display
  9660.     
  9661.     
  9662.      Qualifier     Qualifier     Qualifier
  9663.     
  9664.     Used to create qualifiers which are named elements of an array.
  9665.     
  9666.      Example:
  9667.        Var Presidents
  9668.        Qualifier FirstName, LastName
  9669.     
  9670.        Presidents[1].FirstName = 'George'
  9671.        Presidents[1].LastName = 'Washington'
  9672.     
  9673.     See Also: Var Constant Shared
  9674.     
  9675.     Category: Variable
  9676.     
  9677.  
  9678.     Computer Tyme * MarxMenu * Users Manual                 Page #165
  9679.     -----------------------------------------------------------------
  9680.     
  9681.      Random : Number     Random : Number     Random : Number
  9682.     
  9683.     The Random command returns random numbers between 0 and +2,147,483,647.
  9684.     (2^31). The algorithm has been checked for good uniformity and takes
  9685.     advantage of re-seeding itself from random events like the timer
  9686.     interrupt and keyboard input.
  9687.     
  9688.     To get a random number in a specific range, use the Mod command.
  9689.     
  9690.      Example:
  9691.        Write 'Pick a Number from 1 to 10 '
  9692.        Writeln (Random mod 10 + 1)
  9693.     
  9694.     Category: Math
  9695.     
  9696.     
  9697.      ReadAscTextFile (FileName,2D Array)     ReadAscTextFile (FileName,2D Array)     ReadAscTextFile (FileName,2D Array)
  9698.     
  9699.     ReadAscTextFile reads a standard comma delimited text file into a two
  9700.     dimensional array. The lines of the file must be limited to 255
  9701.     characters and the number of lines must be less than 13100. It also has
  9702.     to fit in memory.
  9703.     
  9704.     All text in quotes is converted to strings. Numbers not in quotes are
  9705.     translated as numbers unless there is a '.' in which case they are
  9706.     translated as floating point numbers.
  9707.     
  9708.     Category: File Array
  9709.     
  9710.     
  9711.      ReadDirectory (Path,Array)     ReadDirectory (Path,Array)     ReadDirectory (Path,Array)
  9712.     
  9713.     Reads a directory into and array. This command is controlled be several
  9714.     variables that control its behavior.
  9715.     
  9716.     If WholeFileNames is set to true, the names that are returned contain
  9717.     the whole path. If HiddenAndSystem is set to True, then Hidden and
  9718.     System files are also read. If IncludeDirectories is set to true, then
  9719.     directories are also read.
  9720.     
  9721.     If DirectoriesOnly is set to true, then only directory names are read.
  9722.     
  9723.      Example:
  9724.        Var X
  9725.        WholeFileNames Off
  9726.        ReadDirectory('*.MNU',X)
  9727.        Loop X
  9728.           Execute ('COPY ' + X[LoopIndex] + ' A:')
  9729.        EndLoop
  9730.     
  9731.  
  9732.     Computer Tyme * MarxMenu * Users Manual                 Page #166
  9733.     -----------------------------------------------------------------
  9734.     
  9735.     See Also: WholeFileNames HiddenAndSystem IncludeDirectories
  9736.     See Also: DirectoriesOnly
  9737.     
  9738.     Category: Array File
  9739.     
  9740.     
  9741.      ReadEnv (String) : String     ReadEnv (String) : String     ReadEnv (String) : String
  9742.     
  9743.     Returns the environment string specified.
  9744.     
  9745.      Example: PathString = ReadEnv('PATH')
  9746.     
  9747.     See Also: SetEnv ReadEnvironment ShellEnvironment
  9748.     See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  9749.     
  9750.     Category: Environment
  9751.     
  9752.     
  9753.      ReadEnvironment (Array)     ReadEnvironment (Array)     ReadEnvironment (Array)
  9754.     
  9755.     Reads all environment variables into an array. LongestLine is set to the
  9756.     length of the longest environment variable.
  9757.     
  9758.      Example:
  9759.        Var Env
  9760.        ReadEnvironment (Env)
  9761.        Writeln 'Your current environment variables are:'
  9762.        Loop Env
  9763.           Writeln Env[LoopIndex]
  9764.        EndLoop
  9765.        Writeln
  9766.        Writeln('Your Environment Size is :',Str(EnvSize))
  9767.        Writeln('You are using            :',Str(EnvSize-EnvFree),' bytes.')
  9768.        Writeln('You have                 :,'Str(EnvFree),' bytes free.')
  9769.     
  9770.     See Also: SetEnv ReadEnv ShellEnvironment
  9771.     See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  9772.     
  9773.     Category: Environment Array
  9774.     
  9775.     
  9776.      ReadFileBlock (Name,Offset,Size,Segment)     ReadFileBlock (Name,Offset,Size,Segment)     ReadFileBlock (Name,Offset,Size,Segment)
  9777.     
  9778.     ReadFileBlock reads disk file Name starting at byte Offset for Size
  9779.     bytes into memory buffer Segment. It is intended to read any kind of
  9780.     file.
  9781.     
  9782.     The maximum value for Size is 65504. The segment must be as large as the
  9783.     number of bytes you are reading. The following example will copy a small
  9784.     file.
  9785.     
  9786.  
  9787.     Computer Tyme * MarxMenu * Users Manual                 Page #167
  9788.     -----------------------------------------------------------------
  9789.     
  9790.      Example:
  9791.        Var RamBlock Size
  9792.        Size = FileSize 'MARXREAD.ME'
  9793.        RamBlock = GetMem(Size)
  9794.        ReadFileBlock('MARXREAD.ME' 0 Size RamBlock)
  9795.        WriteFileBlock('COPYREAD.ME' 0 Size RamBlock)
  9796.        FreeMem(RamBlock)
  9797.     
  9798.     See Also: WriteFileBlock GetMem FreeMem
  9799.     
  9800.     Category: File Memory
  9801.     
  9802.     
  9803.      ReadKey : String     ReadKey : String     ReadKey : String
  9804.     
  9805.     Returns the character that is input from the keyboard. If UseArrows is
  9806.     on then the inverse bar will appear in the current window for selecting
  9807.     a choice.
  9808.     
  9809.      Example:
  9810.        Var Key
  9811.     
  9812.        Repeat
  9813.          Writeln( 'Press the <ESC> key to exit this program.' )
  9814.          Key = ReadKey
  9815.        Until Key = Esc
  9816.     
  9817.     See Also: UseArrows UpperCaseOnly
  9818.     
  9819.     Category: Keyboard
  9820.     
  9821.     
  9822.      Readln : String     Readln : String     Readln : String
  9823.     
  9824.     Reads a string from the keyboard. By default the size of the string is
  9825.     from the cursor position to one space left of the right side of the
  9826.     current window. The size can be set to a smaller value using the
  9827.     InputLength command.
  9828.     
  9829.     InputString can be set to preload the string with a value for editing.
  9830.     UppercaseOnly can be set to force the string be entered in uppercase.
  9831.     
  9832.      Example:
  9833.        Name   = Readln
  9834.        Number = Value (Readln) ;Converts to an numerical value
  9835.        State  = UpperCase (ReadLn)
  9836.     
  9837.     See Also: InputString UpperCaseOnly InsertMode InputLength
  9838.     See Also: TrimInputString InputBlankChar CapsOnly
  9839.     
  9840.  
  9841.     Computer Tyme * MarxMenu * Users Manual                 Page #168
  9842.     -----------------------------------------------------------------
  9843.     
  9844.     Category: String
  9845.     
  9846.     
  9847.      ReadTextFile (FileName,Array)     ReadTextFile (FileName,Array)     ReadTextFile (FileName,Array)
  9848.     
  9849.     This command reads a text file into a string array. It also sets the
  9850.     variable LongestLine to the length of the longest line in the file.
  9851.     
  9852.      Example:
  9853.        Var Docs
  9854.     
  9855.        ReadTextFile('MARXMENU.DOC',Docs)
  9856.          ;After the read, Docs[1] becomes the first line of the file.
  9857.          ;Docs[NumberOfElements(Docs)] becomes the last line.
  9858.        Loop NumberOfElements(Docs)
  9859.            ; Convert each line to its uppercase equivalent
  9860.          Docs[LoopIndex] = UpperCase Docs[LoopIndex]
  9861.        EndLoop
  9862.          ;Save the newly formatted array
  9863.        WriteTextFile ('NEWMM.DOC',Docs)
  9864.     
  9865.     Do not use FileOpen with ReadTextFile.
  9866.     
  9867.     The power of the ReadTextFile and WriteTextFile have expanded. You can
  9868.     now load and save arrays of any variable types, multidimensional arrays,
  9869.     and mixed array types. This includes strings, numbers, and booleans.
  9870.     File variables are also stored. When a file variable is stored and
  9871.     reloaded the FileAssign command is not necessary.
  9872.     
  9873.     Category: File Array
  9874.     
  9875.     
  9876.      Real (Integer) : Real     Real (Integer) : Real     Real (Integer) : Real
  9877.     
  9878.     Returns the real equivalent of an integer.
  9879.     
  9880.      Example:
  9881.        Real(5)  ;returns 5.0
  9882.     
  9883.     See Also: Integer
  9884.     
  9885.     Category: Math Float
  9886.     
  9887.     
  9888.      Reboot     Reboot     Reboot
  9889.     
  9890.     Causes the computer to do a warm reboot.
  9891.     
  9892.     See Also: ColdBoot
  9893.     
  9894.     Category: Execution
  9895.     
  9896.  
  9897.     Computer Tyme * MarxMenu * Users Manual                 Page #169
  9898.     -----------------------------------------------------------------
  9899.     
  9900.      ReleaseDate : String     ReleaseDate : String     ReleaseDate : String
  9901.     
  9902.     Returns the MarxMenu Release Date.
  9903.     
  9904.     Category: String
  9905.     
  9906.     
  9907.      Repeat     Repeat     Repeat
  9908.     
  9909.     Used for program control. Usage:
  9910.     
  9911.      REPEAT
  9912.         (statement)
  9913.         (statement)
  9914.      UNTIL (condition)
  9915.     
  9916.      Example:
  9917.        Var Key
  9918.     
  9919.        Repeat
  9920.          Key = ReadKey
  9921.          If Key = 'A'
  9922.            Bat( 'DOLIST.EXE' )
  9923.            ExitMenu
  9924.          EndIf
  9925.          If Key = F1 Then Help
  9926.        Until Key = Esc
  9927.     
  9928.     Category: Conditional
  9929.     
  9930.     
  9931.      ResizeWindow (Horizontal Vertical)     ResizeWindow (Horizontal Vertical)     ResizeWindow (Horizontal Vertical)
  9932.     
  9933.     Changes the size of the top window. The horizontal and vertical numbers
  9934.     are added to the current size. Use negative numbers to shrink the
  9935.     window. The top left corner stays in the same place.
  9936.     
  9937.      Example:
  9938.        DrawBox 15 5 30 15
  9939.        ResizeWindow 15 5
  9940.     
  9941.     See Also: MoveWindow
  9942.     
  9943.     Category: Display
  9944.     
  9945.  
  9946.     Computer Tyme * MarxMenu * Users Manual                 Page #170
  9947.     -----------------------------------------------------------------
  9948.     
  9949.      Return (param,param,...)     Return (param,param,...)     Return (param,param,...)
  9950.     
  9951.     Exits a procedure and optionally returns parameters to the calling
  9952.     procedure. It can return as many parameters as you want as long as the
  9953.     calling program uses the same number of parameters. Otherwise, you will
  9954.     get an "Invalid number of parameters" error.
  9955.     
  9956.      Example:
  9957.     
  9958.      Procedure SmallRandomNumber
  9959.      {Returns a random number between 1 and 100}
  9960.      var SmallRand
  9961.         SmallRand = Random mod 100
  9962.         Return (SmallRand + 1)
  9963.      EndProc
  9964.     
  9965.     See Also: Procedure EndProc
  9966.     
  9967.     Category: Misc
  9968.     
  9969.     
  9970.      ReturnCode : Number     ReturnCode : Number     ReturnCode : Number
  9971.     
  9972.     When you use the Execute function, a ReturnCode value is fed into this
  9973.     variable when you return to the menu. The code returned is the same as
  9974.     what the DOS ErrorLevel would be. This will not work if you use the
  9975.     UseCommand On function because COMMAND.COM would have been loaded and
  9976.     the returncode would be lost.
  9977.     
  9978.      Example:
  9979.         Execute 'INMEM.EXE SK'
  9980.         if ReturnCode = 0 then Writeln 'SideKick not Loaded!'
  9981.     
  9982.     See Also: ExitCode
  9983.     
  9984.     Category: Execution
  9985.     
  9986.     
  9987.      Right (string,count) : String     Right (string,count) : String     Right (string,count) : String
  9988.     
  9989.     Returns right characters of string for length count.
  9990.     
  9991.      Example: Right('ABCDEF',3) returns 'DEF'
  9992.     
  9993.     Category: String
  9994.     
  9995.  
  9996.     Computer Tyme * MarxMenu * Users Manual                 Page #171
  9997.     -----------------------------------------------------------------
  9998.     
  9999.      RmDir (String)     RmDir (String)     RmDir (String)
  10000.     
  10001.     Removes a directory. The FileResult variable returns the DOS result
  10002.     error code. A zero in FileResult indicates success. You can't remove a
  10003.     directory that contains files.
  10004.     
  10005.      Example:
  10006.         RmDir 'C:\NETUTILS'
  10007.     
  10008.     See Also: ChDir MkDir
  10009.     
  10010.     Category: File
  10011.     
  10012.     
  10013.      RollWindow (number)     RollWindow (number)     RollWindow (number)
  10014.     
  10015.     Windows can be looked at as a stack. RollWindow will roll a previous
  10016.     window to the top of the stack making the previous window the current
  10017.     window.
  10018.     
  10019.      Example:
  10020.          ;Make the Third window on the stack the active window
  10021.        RollWindow 3
  10022.          ;Write out message
  10023.        Writeln 'You have mail waiting!'
  10024.          ;Now put the windows back
  10025.        PushBackWindow (3)
  10026.     
  10027.        Procedure PushBackWindow (N)
  10028.     
  10029.        ;Will roll a window back to its original position on the stack
  10030.        ;The parameter should be the same as the parameter for the call
  10031.        ;to RollWindow. If you use RollWindow(3) then use PushBackWindow(3)
  10032.     
  10033.          Loop N
  10034.            RollWindow N
  10035.          EndLoop
  10036.        EndProc ;PushBackWindow
  10037.     
  10038.     See Also: CurrentWindow SetTopWindow
  10039.     
  10040.     Category: Display
  10041.     
  10042.     
  10043.      Run variable (parameters)     Run variable (parameters)     Run variable (parameters)
  10044.     
  10045.     This runs a procedure that was stored in a variable.
  10046.     
  10047.      var Y
  10048.     
  10049.  
  10050.     Computer Tyme * MarxMenu * Users Manual                 Page #172
  10051.     -----------------------------------------------------------------
  10052.     
  10053.      Procedure WriteSquared (X)
  10054.         Writeln (X * X)
  10055.      EndProc
  10056.     
  10057.      Example:
  10058.         Y = Loc(WriteSquared)
  10059.         Run Y(3)   ; This will write a 9 on the screen
  10060.     
  10061.     Warning! Don't put the variable you are running in parentheses.
  10062.     
  10063.         Run (Y,3)  ; this won't work
  10064.     
  10065.     See Also: Loc
  10066.     
  10067.     Category: Misc
  10068.     
  10069.     
  10070.      SavePosition (On/Off)     SavePosition (On/Off)     SavePosition (On/Off)
  10071.     
  10072.     If SavePosition is On, MarxMenu will return to the last menu selection
  10073.     you made when MarxMenu is re-entered. As you select menu layers your
  10074.     keystrokes are stored in an internal string variable called KeySave. On
  10075.     exit, MarxMenu writes KeySave to an environment variable KSV. On return
  10076.     to MarxMenu, this variable is retrieved. The return point may be altered
  10077.     by using the command KeySave = (string).
  10078.     
  10079.     Another thing this points out is that environment variables can be used
  10080.     to store information and allow MarxMenu to remember things from one
  10081.     selection to another. Since MarxMenu doesn't stay memory resident, this
  10082.     is the only way I have found to store information.
  10083.     
  10084.     Category: Keyboard Environment
  10085.     
  10086.     
  10087.      ScreenHeight : Number     ScreenHeight : Number     ScreenHeight : Number
  10088.     
  10089.     Returns number of rows of character on your screen. Normally this is 25.
  10090.     
  10091.     Category: Display
  10092.     
  10093.     
  10094.      ScreenWidth : Number     ScreenWidth : Number     ScreenWidth : Number
  10095.     
  10096.     Returns number of columns of character on your screen. Normally this is
  10097.     80.
  10098.     
  10099.     Category: Display
  10100.     
  10101.  
  10102.     Computer Tyme * MarxMenu * Users Manual                 Page #173
  10103.     -----------------------------------------------------------------
  10104.     
  10105.      ScrollLock : Boolean     ScrollLock : Boolean     ScrollLock : Boolean
  10106.     
  10107.     Returns true if Scroll Lock is on. This command can also set the Scroll
  10108.     Lock on and off.
  10109.     
  10110.      Example:
  10111.        if ScrollLock then Write 'ScrollLock is On'
  10112.     
  10113.        ScrollLock On  ;Turns ScrollLock On
  10114.        ScrollLock Off ;Turns ScrollLock Off
  10115.     
  10116.        ScrollLock (by itself) turns ScrollLock On.
  10117.     
  10118.        To test for ScrollLock:
  10119.        if ScrollLock
  10120.           <do something>
  10121.        endif
  10122.     
  10123.     See Also: CapsLock NumLock
  10124.     
  10125.     Category: System
  10126.     
  10127.     
  10128.      ScrollMove (On/Off)     ScrollMove (On/Off)     ScrollMove (On/Off)
  10129.     
  10130.     This allows you to control whether or not the ScrollLock will allow you
  10131.     to move the top window. Default is On.
  10132.     
  10133.      Example:
  10134.        ScrollMove Off
  10135.     
  10136.     Category: Display
  10137.     
  10138.     
  10139.      Second : Number     Second : Number     Second : Number
  10140.     
  10141.     Returns the current second.
  10142.     
  10143.     Category: Time
  10144.     
  10145.     
  10146.      SecondOf (Date) : Number     SecondOf (Date) : Number     SecondOf (Date) : Number
  10147.     
  10148.     Returns the second of a date. If Date is passed as a string it is
  10149.     converted automatically.
  10150.     
  10151.      Example:
  10152.        SecondOf '6:32:23'  ;returns 23
  10153.     
  10154.     See Also: TimeOf BadDate
  10155.     
  10156.  
  10157.     Computer Tyme * MarxMenu * Users Manual                 Page #174
  10158.     -----------------------------------------------------------------
  10159.     
  10160.     Category: Time
  10161.     
  10162.     
  10163.      Security (on/off)     Security (on/off)     Security (on/off)
  10164.     
  10165.     When security is on, Readln echos '*' instead of the letters that are
  10166.     being typed. This is used for such things as entering passwords other
  10167.     than using the password command.
  10168.     
  10169.      Example:
  10170.        Security On
  10171.     
  10172.     Category: String
  10173.     
  10174.     
  10175.      Segment (String) : Number     Segment (String) : Number     Segment (String) : Number
  10176.     
  10177.     Returns the memory segment where string is located.
  10178.     
  10179.     See Also: Offset
  10180.     
  10181.     Category: Memory
  10182.     
  10183.     
  10184.      SelectPath : String     SelectPath : String     SelectPath : String
  10185.     
  10186.     This command uses another program in the Computer Tyme DOS TOOLBOX
  10187.     called Pick Directory to read a text into a variable. You must have
  10188.     Computer Tyme Pick Directory for this feature to work.
  10189.     
  10190.      Example:
  10191.        OnKey 'B'
  10192.        |%BackPath = SelectPath
  10193.        cd %BackPath
  10194.        backup c: a:
  10195.     
  10196.     Category: String
  10197.     
  10198.     
  10199.      SerialPorts : Number     SerialPorts : Number     SerialPorts : Number
  10200.     
  10201.     Returns number of serial ports.
  10202.     
  10203.     Category: System
  10204.     
  10205.     
  10206.      SetArraySize (Array,Size)     SetArraySize (Array,Size)     SetArraySize (Array,Size)
  10207.     
  10208.     If the array is larger than Size the array is truncated. If it is
  10209.     smaller, memory is allocated for the array.
  10210.     
  10211.     Category: Array
  10212.     
  10213.  
  10214.     Computer Tyme * MarxMenu * Users Manual                 Page #175
  10215.     -----------------------------------------------------------------
  10216.     
  10217.      SetEnv (String)     SetEnv (String)     SetEnv (String)
  10218.     
  10219.     This is used to set environment strings. It can be used on the Current,
  10220.     Parent, Master or Shell environment.
  10221.     
  10222.      Example:
  10223.     
  10224.        SetEnv ('PATH=C:\')
  10225.        SetEnv ('COMSPEC=X:COMMAND.COM')
  10226.     
  10227.     MarxMenu also allows you to select which environment you are working
  10228.     with. This is done with the following commands.
  10229.     
  10230.      CurrentEnvironment
  10231.      ParentEnvironment
  10232.      MasterEnvironment
  10233.      ShellEnvironment
  10234.     
  10235.     See Also: ReadEnv ReadEnvironment ShellEnvironment
  10236.     See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
  10237.     
  10238.     Category: Environment
  10239.     
  10240.     
  10241.      SetTopWindow (Number)     SetTopWindow (Number)     SetTopWindow (Number)
  10242.     
  10243.     Selects a window by number making it the current window and moves it to
  10244.     the top.
  10245.     
  10246.      Example:
  10247.        DrawBox ....
  10248.        ThisWindow = CurrentWindow
  10249.        DrawBox ....
  10250.        DrawBox ....
  10251.        SetTopWindow (ThisWindow)
  10252.     
  10253.     See Also: CurrentWindow RollWindow SetWindowUnder
  10254.     
  10255.     Category: Display
  10256.     
  10257.     
  10258.      SetWindowUnder (Window1,Window2)     SetWindowUnder (Window1,Window2)     SetWindowUnder (Window1,Window2)
  10259.     
  10260.     This command moves Window1 underneath Window2. This can be used to put a
  10261.     window back in the stack after you use SetTopWindow.
  10262.     
  10263.      Example:
  10264.         SetWindowUnder (StatusWindow,StatusWindow + 1)
  10265.     
  10266.     See Also: CurrentWindow SetTopWindow RollWindow
  10267.     
  10268.  
  10269.     Computer Tyme * MarxMenu * Users Manual                 Page #176
  10270.     -----------------------------------------------------------------
  10271.     
  10272.     Category: Display
  10273.     
  10274.     
  10275.      Shadow (on/off)     Shadow (on/off)     Shadow (on/off)
  10276.     
  10277.     Turn window shadows on/off.
  10278.     
  10279.      Example:
  10280.         Shadow On
  10281.     
  10282.     Category: Display
  10283.     
  10284.     
  10285.      ShadowColor (ForeColor,BackColor)     ShadowColor (ForeColor,BackColor)     ShadowColor (ForeColor,BackColor)
  10286.     
  10287.     Sets the color of the shadow. There are actually two shadow colors.
  10288.     MarxMenu stores different values for big shadows and small shadows.
  10289.     
  10290.     See Also: BigShadow SmallShadow ShadowPosition Shadow
  10291.     
  10292.     Category: Color
  10293.     
  10294.     
  10295.      ShadowPosition (number)     ShadowPosition (number)     ShadowPosition (number)
  10296.     
  10297.     Selects the shadow position around the window. A zero (default) sets the
  10298.     shadow position to the bottom right side. A one sets the shadow position
  10299.     to the bottom left. Using ShadowPosition turns shadowing on so a Shadow
  10300.     On command is not required.
  10301.     
  10302.      Example:
  10303.        ShadowPosition 1
  10304.     
  10305.     See Also: Shadow ShadowColor BigShadow SmallShadow
  10306.     
  10307.     Category: Display
  10308.     
  10309.     
  10310.      Shared     Shared     Shared
  10311.     
  10312.     The key word SHARED can be used to define variables just like VAR. Any
  10313.     variable defined with SHARED is passed globally to and from overlays.
  10314.     
  10315.     The important thing is that the Shared variables must be defined exactly
  10316.     the same way between the overlays. There is also a pre-defined variable
  10317.     called COMMON. Technically, Shared variables are qualifiers off of
  10318.     COMMON.
  10319.     
  10320.      Example:
  10321.        Shared Var1 Var2 Var3
  10322.     
  10323.     See Also: Var Constant Qualifier
  10324.     
  10325.  
  10326.     Computer Tyme * MarxMenu * Users Manual                 Page #177
  10327.     -----------------------------------------------------------------
  10328.     
  10329.     Category: Variable
  10330.     
  10331.     
  10332.      ShellEnvironment     ShellEnvironment     ShellEnvironment
  10333.     
  10334.     ShellEnvironment selects the environment of the last COMMAND.COM in
  10335.     memory for use with environment access commands. This is usually the
  10336.     same as the Master Environment.
  10337.     
  10338.     More than one COMMAND.COM is loaded when you are running a shell under
  10339.     WINDOWS or DESQVIEW. When using these programs, you will want to access
  10340.     the Shell Envoronment instead of the Master Environment. The Shell
  10341.     Environment is the one that will run batch files.
  10342.     
  10343.     See Also: ReadEnv SetEnv ReadEnvironment MasterEnvironment
  10344.     See Also: CurrentEnvironment ParentEnvironment
  10345.     
  10346.     Category: Environment
  10347.     
  10348.     
  10349.      Shl : Operator     Shl : Operator     Shl : Operator
  10350.     
  10351.     Shift left, does a binary 32 bit shift left.
  10352.     
  10353.      Example:
  10354.        Writeln 5 Shl 2  ;returns 20
  10355.     
  10356.     See Also: Shr
  10357.     
  10358.     Category: Math
  10359.     
  10360.     
  10361.      Shr : Operator     Shr : Operator     Shr : Operator
  10362.     
  10363.     Shift right, does a binary 32 bit shift right.
  10364.     
  10365.      Example:
  10366.        Writeln 20 Shr 2  ;returns 5
  10367.     
  10368.     See Also: Shl
  10369.     
  10370.     Category: Math
  10371.     
  10372.     
  10373.      Sin (Radians) : Real     Sin (Radians) : Real     Sin (Radians) : Real
  10374.     
  10375.     Returns the Sine of a real.
  10376.     
  10377.     Category: Math Float
  10378.     
  10379.  
  10380.     Computer Tyme * MarxMenu * Users Manual                 Page #178
  10381.     -----------------------------------------------------------------
  10382.     
  10383.      SingleLineBox     SingleLineBox     SingleLineBox
  10384.     
  10385.     Selects single line box for menu borders.
  10386.     
  10387.     See Also: DoubleLineBox BlockBox CustomBox NoBoxBorder
  10388.     
  10389.     Category: Display
  10390.     
  10391.     
  10392.      SmallShadow     SmallShadow     SmallShadow
  10393.     
  10394.     Selects small shadow type.
  10395.     
  10396.     See Also: BigShadow ShadowPosition ShadowColor
  10397.     
  10398.     Category: Display
  10399.     
  10400.     
  10401.      SortArray (Array)     SortArray (Array)     SortArray (Array)
  10402.     
  10403.     SortArray will do an alphabetical sort on an array of strings.
  10404.     
  10405.      Example: Sort a Text File
  10406.     
  10407.        Usage: DIR|MARXMENU SORT|MORE
  10408.               MARXMENU SORT INFILE OUTFILE
  10409.     
  10410.        SORT.MNU
  10411.          var SortBuf
  10412.          StandardIO
  10413.          ReadTextFile  (ParamStr(2),SortBuf)
  10414.          SortArray(SortBuf)
  10415.          WriteTextFile (ParamStr(3),SortBuf)
  10416.     
  10417.     Category: Array
  10418.     
  10419.     
  10420.      Sound (on/off)     Sound (on/off)     Sound (on/off)
  10421.     
  10422.     Turn sound effects on/off.
  10423.     
  10424.     Category: Display
  10425.     
  10426.     
  10427.      SplitPath (Array)     SplitPath (Array)     SplitPath (Array)
  10428.     
  10429.     SplitPath reads the PATH environment variable and splits it up into and
  10430.     array of strings that are directories the path is made up of. All
  10431.     directory names are capitalized.
  10432.     
  10433.      Example:
  10434.        var P
  10435.        SplitPath P
  10436.        Loop P
  10437.           Writeln P[LoopIndex]   ;writes the directories in PATH
  10438.        EndLoop
  10439.     
  10440.  
  10441.     Computer Tyme * MarxMenu * Users Manual                 Page #179
  10442.     -----------------------------------------------------------------
  10443.     
  10444.     See Also: BuildPath FixPath
  10445.     
  10446.     Category: String Array Environment
  10447.     
  10448.     
  10449.      Sqr (Real) : Real     Sqr (Real) : Real     Sqr (Real) : Real
  10450.     
  10451.     Returns the Square Root of a real.
  10452.     
  10453.     Category: Math Float
  10454.     
  10455.     
  10456.      StandardIO (on/off)     StandardIO (on/off)     StandardIO (on/off)
  10457.     
  10458.     This tells MarxMenu to use standard Input and Output file handles for
  10459.     reading the keyboard and writing to the screen when turned on. When
  10460.     turned off, MarxMenu does direct screen writes. When StandardIO is on,
  10461.     several MarxMenu commands will send ANSI escape sequences. The commands
  10462.     that send ANSI sequences are as follows:
  10463.     
  10464.      TextColor
  10465.      TextBackground
  10466.      ClearScreen
  10467.      ClearLine
  10468.      GotoXY
  10469.     
  10470.     The input and output can be redirected by using the InFile and OutFile
  10471.     variables.
  10472.     
  10473.     See Also: InFile OutFile
  10474.     
  10475.     Category: Display Ansi
  10476.     
  10477.     
  10478.      Str (number) : String     Str (number) : String     Str (number) : String
  10479.     
  10480.     Turns a number into a string.
  10481.     
  10482.      Example:
  10483.        Str(6 * 5)  ;returns the string '30'
  10484.     
  10485.     See Also: Value
  10486.     
  10487.     Category: String
  10488.     
  10489.     
  10490.      StuffAKey (String or Number)     StuffAKey (String or Number)     StuffAKey (String or Number)
  10491.     
  10492.     Stuffs a single key into the DOS keyboard buffer when MarxMenu exits.
  10493.     The limit is 16 characters.
  10494.     
  10495.      Example:
  10496.        StuffAKey($3F00) ;stuff the F5 key
  10497.        StuffAKey F5     ;same thing
  10498.     
  10499.  
  10500.     Computer Tyme * MarxMenu * Users Manual                 Page #180
  10501.     -----------------------------------------------------------------
  10502.     
  10503.     Do not mix StuffAKey with StuffKBD. Use one or the other.
  10504.     
  10505.     Category: Execution Keyboard String
  10506.     
  10507.     
  10508.      StuffKBD (String)     StuffKBD (String)     StuffKBD (String)
  10509.     
  10510.     Stuffs the string into the DOS keyboard buffer when MarxMenu exits. The
  10511.     limit is 16 characters.
  10512.     
  10513.      Example:
  10514.         StuffKBD 'LOGOUT' + CR
  10515.     
  10516.     Category: Execution Keyboard String
  10517.     
  10518.     
  10519.      StuffKeyboardNow     StuffKeyboardNow     StuffKeyboardNow
  10520.     
  10521.     Normally the keyboard stuffing is done as MarxMenu quits. This forces
  10522.     the keyboard to be stuffed immediately.
  10523.     
  10524.     Category: Keyboard
  10525.     
  10526.     
  10527.      Succ (number) : Number     Succ (number) : Number     Succ (number) : Number
  10528.     
  10529.     Returns number plus 1.
  10530.     
  10531.      Example:
  10532.        Succ(4)  ;returns 5
  10533.     
  10534.     See Also: Pred
  10535.     
  10536.     Category: Math
  10537.     
  10538.     
  10539.      Suggest (Char)     Suggest (Char)     Suggest (Char)
  10540.     
  10541.     Normally the UseArrows command will start in the upper left hand corner.
  10542.     By using the Suggest command, you can set it to start on any menu
  10543.     selection.
  10544.     
  10545.      Example:
  10546.         Suggest 'E'
  10547.     
  10548.     Category: Display
  10549.     
  10550.  
  10551.     Computer Tyme * MarxMenu * Users Manual                 Page #181
  10552.     -----------------------------------------------------------------
  10553.     
  10554.      TextBackground (color)     TextBackground (color)     TextBackground (color)
  10555.     
  10556.     Sets text background color.
  10557.     
  10558.      Example:
  10559.        TextBackground Blue
  10560.     
  10561.     Category: Color Ansi
  10562.     
  10563.     
  10564.      TextColor (forecolor,backcolor)     TextColor (forecolor,backcolor)     TextColor (forecolor,backcolor)
  10565.     
  10566.     Sets the color of text to be displayed on the screen. TextColor resets
  10567.     the value of CapsColor.
  10568.     
  10569.      Example:
  10570.         TextColor Yellow Brown
  10571.     
  10572.     Category: Color Ansi
  10573.     
  10574.     
  10575.      TextMode (num)     TextMode (num)     TextMode (num)
  10576.     
  10577.     Sets the video text mode.
  10578.     
  10579.      0 = 40 column BW
  10580.      1 = 40 column COLOR
  10581.      2 = 80 column BW
  10582.      3 = 80 column COLOR
  10583.      7 = Mono
  10584.      258 = 43/50 line EGA BW
  10585.      259 = 43/50 line EGA COLOR
  10586.     
  10587.      Example:
  10588.        TextMode BW80
  10589.     
  10590.     Category: Display
  10591.     
  10592.     
  10593.      TextPos : Number     TextPos : Number     TextPos : Number
  10594.     
  10595.     TextPos returns the current position in a text file. This can be saved
  10596.     so that you can go to the same place using TextSeek.
  10597.     
  10598.     See Also: TextSeek
  10599.     
  10600.     Category: File
  10601.     
  10602.  
  10603.     Computer Tyme * MarxMenu * Users Manual                 Page #182
  10604.     -----------------------------------------------------------------
  10605.     
  10606.      TextSeek (Number)     TextSeek (Number)     TextSeek (Number)
  10607.     
  10608.     TextSeek moves to a specific byte in a text file.
  10609.     
  10610.     See Also: TextPos
  10611.     
  10612.     Category: File
  10613.     
  10614.     
  10615.      Then     Then     Then
  10616.     
  10617.     Conditional control.
  10618.     
  10619.      Example:
  10620.        if <condition> then <do something>
  10621.     
  10622.     See Also: If Else Endif ElseIf
  10623.     
  10624.     Category: Conditional
  10625.     
  10626.     
  10627.      TimeOf (String) : Number     TimeOf (String) : Number     TimeOf (String) : Number
  10628.     
  10629.     Converts a string representing a date to a time number. The number is
  10630.     the number of seconds since 01-01-80. Conversion follows international
  10631.     rules based on the country code.
  10632.     
  10633.      Examples:
  10634.        '4-7-91'                 ;04-07-1991 00:00:00
  10635.        'April 7th, 1991 4:35pm' ;04-07-1991 16:35:00
  10636.        '12:35:23a'              ;04-07-1991 00:35:23
  10637.        '3:15'                   ;04-07-1991 03:15:00
  10638.     
  10639.     If the string can't be converted, then BadDate is set to true.
  10640.     
  10641.     See Also: BadDate
  10642.     
  10643.     Category: International Time
  10644.     
  10645.     
  10646.      Timer : Number     Timer : Number     Timer : Number
  10647.     
  10648.     Returns the system timer 32 bit value that is set to 0 at midnight and
  10649.     is incremented 18.2 times a second.
  10650.     
  10651.     Category: Time
  10652.     
  10653.  
  10654.     Computer Tyme * MarxMenu * Users Manual                 Page #183
  10655.     -----------------------------------------------------------------
  10656.     
  10657.      TimeSeparator : String     TimeSeparator : String     TimeSeparator : String
  10658.     
  10659.     Returns the time separator character from the country information.
  10660.     
  10661.     See Also: DecimalSeparator DateSeparator CountryCode
  10662.     
  10663.     Category: International Time
  10664.     
  10665.     
  10666.      TimeString (Time) : String     TimeString (Time) : String     TimeString (Time) : String
  10667.     
  10668.     Returns the time as a string in HH:MM:SS format. 24 hour. If no
  10669.     parameter is passed, Now is assumed.
  10670.     
  10671.      Example:
  10672.        Writeln TimeString
  10673.           ;returns the time of Now as text
  10674.        Writeln TimeString (Now + (5 * SecondsInHour))
  10675.           ;returns the time of 5 hours from now as text
  10676.     
  10677.     Category: String Time
  10678.     
  10679.     
  10680.      TMaxActiveTasks : Number     TMaxActiveTasks : Number     TMaxActiveTasks : Number
  10681.     
  10682.     Returns the number of active tasks started under TaskMax.
  10683.     
  10684.     Category: TaskMax
  10685.     
  10686.     
  10687.      TMaxCreateTask (command string)     TMaxCreateTask (command string)     TMaxCreateTask (command string)
  10688.     
  10689.     TMaxCreateTask creates a new task and executes it. You pass it a command
  10690.     line just like you would use the Execute program. Like the execute
  10691.     program, if you use the COM or EXE extension then you won't load a
  10692.     secondary command.com and save yourself 5k of memory and gain some
  10693.     speed. When the program exits that task is cleared.
  10694.     
  10695.     The TaskID of the created task is returned in TMaxResult.
  10696.     
  10697.      Example:
  10698.         TMaxCreateTask 'DIR *.*'
  10699.     
  10700.     See Also: TMaxReturnCount TMaxResult
  10701.     
  10702.     Category: TaskMax
  10703.     
  10704.  
  10705.     Computer Tyme * MarxMenu * Users Manual                 Page #184
  10706.     -----------------------------------------------------------------
  10707.     
  10708.      TMaxCut (TaskID)     TMaxCut (TaskID)     TMaxCut (TaskID)
  10709.     
  10710.     Activates TaskMax data cutting function.
  10711.     
  10712.     See Also: TMaxPaste TMaxGetPasteBuffer TMaxSetPasteBuffer
  10713.     
  10714.     Category: TaskMax
  10715.     
  10716.     
  10717.      TMaxDeleteTask (TaskID)     TMaxDeleteTask (TaskID)     TMaxDeleteTask (TaskID)
  10718.     
  10719.     Kills the task identified by TaskID.
  10720.     
  10721.     See Also: TMaxTaskOpenFiles
  10722.     
  10723.     Category: TaskMax
  10724.     
  10725.     
  10726.      TMaxDirectSwitching (On/Off)     TMaxDirectSwitching (On/Off)     TMaxDirectSwitching (On/Off)
  10727.     
  10728.     Turns on or off the ability to use the direct switch keys without going
  10729.     through the task manager menu. Default is On. By setting it to off the
  10730.     direct switch keys work normally. TaskMax sometimes conflicts with
  10731.     applications when direct switching is on.
  10732.     
  10733.      Example:
  10734.        TMaxdirectSwitching Off
  10735.     
  10736.     Category: TaskMax
  10737.     
  10738.     
  10739.      TMaxEMSMemLim (Number)     TMaxEMSMemLim (Number)     TMaxEMSMemLim (Number)
  10740.     
  10741.     This is a variable that can be either read or set to the maximum number
  10742.     of bytes of EMS memory that each task can have. This prevents one task
  10743.     from hogging up all the EMS. Setting this to 0 disables limiting.
  10744.     
  10745.      Example:
  10746.         TMaxEMSMemLim = 2000000   ;2 megs per task
  10747.         Writeln TMaxEMSLim
  10748.     
  10749.     Category: TaskMax
  10750.     
  10751.     
  10752.      TMaxGetPasteBuffer (Array)     TMaxGetPasteBuffer (Array)     TMaxGetPasteBuffer (Array)
  10753.     
  10754.     Reads the TaskMax paste buffer into and array of strings.
  10755.     
  10756.     See Also: TMaxCut TMaxPaste TMaxSetPasteBuffer
  10757.     
  10758.     Category: TaskMax
  10759.     
  10760.  
  10761.     Computer Tyme * MarxMenu * Users Manual                 Page #185
  10762.     -----------------------------------------------------------------
  10763.     
  10764.      TMaxInstalled : Boolean     TMaxInstalled : Boolean     TMaxInstalled : Boolean
  10765.     
  10766.     This function returns true if TaskMax is installed. Any other TaskMax
  10767.     command produces a run-time error if used when TaskMax is not installed.
  10768.     
  10769.      Example:
  10770.        if not TMaxInstalled
  10771.           Writeln 'This menu requires TaskMax to run!'
  10772.        endif
  10773.     
  10774.     Category: TaskMax
  10775.     
  10776.     
  10777.      TMaxMaxTasks : Number     TMaxMaxTasks : Number     TMaxMaxTasks : Number
  10778.     
  10779.     Returns the total number of tasks allowed by TaskMax. Default is 20.
  10780.     
  10781.     Category: TaskMax
  10782.     
  10783.     
  10784.      TMaxNameTask (Task,Name)     TMaxNameTask (Task,Name)     TMaxNameTask (Task,Name)
  10785.     
  10786.     Normally TaskMax automatically names tasks according to what program is
  10787.     running. TMaxNameTask allows you to override the default task name with
  10788.     a task name of your choosing. The name is limited to 8 characters,
  10789.     
  10790.      Example:
  10791.        TMaxNameTask (2,'MYNAME')   ;renames task 2
  10792.     
  10793.     Category: TaskMax
  10794.     
  10795.     
  10796.      TMaxPaste (TaskID)     TMaxPaste (TaskID)     TMaxPaste (TaskID)
  10797.     
  10798.     Activates TaskMax data pasting function.
  10799.     
  10800.     See Also: TMaxCut TMaxGetPasteBuffer TMaxSetPasteBuffer
  10801.     
  10802.     Category: TaskMax
  10803.     
  10804.     
  10805.      TMaxReadTaskInfo (2D Array)     TMaxReadTaskInfo (2D Array)     TMaxReadTaskInfo (2D Array)
  10806.     
  10807.     Reads the task information table into a 2 dimensional array where the
  10808.     first field is the task name and the second field is the TaskId number.
  10809.     The TaskID number is used by all TMax commands that act on a single task
  10810.     (TMaxDelete, TMaxSwitchTasks ... ).
  10811.     
  10812.      Example:
  10813.         var Tasks
  10814.         TMaxReadTaskInfo(Tasks)
  10815.         Loop Tasks
  10816.            Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
  10817.         EndLoop
  10818.     
  10819.  
  10820.     Computer Tyme * MarxMenu * Users Manual                 Page #186
  10821.     -----------------------------------------------------------------
  10822.     
  10823.     Category: TaskMax
  10824.     
  10825.     
  10826.      TMaxResult : Number     TMaxResult : Number     TMaxResult : Number
  10827.     
  10828.     TMaxResult is a variable containing return information that other TMax
  10829.     command return or the result status of a TMax command.
  10830.     
  10831.     Category: TaskMax
  10832.     
  10833.     
  10834.      TMaxReturnCount     TMaxReturnCount     TMaxReturnCount
  10835.     
  10836.     This variable sets the number of timer ticks (18.2 ticks per second)
  10837.     that TMaxCreateTask will execute a program before returning to the
  10838.     original program. If it is set to 0 it will stay in the original
  10839.     program. By setting TMaxReturnCount to a number other than 0 you can run
  10840.     a program for a few seconds and come back. This is used to preload tasks
  10841.     that you might later want to switch to.
  10842.     
  10843.       Example:
  10844.          TMaxReturnCount = 27      ;1.5 Seconds
  10845.          TMaxCreateTask 'DM3.EXE'  ;load a file manager
  10846.          TMaxReturnCount = 0       ;set back to 0 for normal usage
  10847.     
  10848.     See Also: TMaxCreateTask
  10849.     
  10850.     Category: TaskMax
  10851.     
  10852.     
  10853.      TMaxSetPasteBuffer (Array)     TMaxSetPasteBuffer (Array)     TMaxSetPasteBuffer (Array)
  10854.     
  10855.     Sets the TaskMax paste buffer to the strings in array.
  10856.     
  10857.     See Also: TMaxCut TMaxPaste TMaxGetPasteBuffer
  10858.     
  10859.     Category: TaskMax
  10860.     
  10861.     
  10862.      TMaxSwitchTasks (TaskID)     TMaxSwitchTasks (TaskID)     TMaxSwitchTasks (TaskID)
  10863.     
  10864.     Switches the current task out and selects the task identified be TaskID.
  10865.     
  10866.     Category: TaskMax
  10867.     
  10868.     
  10869.      TMaxSwitchToManager     TMaxSwitchToManager     TMaxSwitchToManager
  10870.     
  10871.     This command brings up the task manager the same way as if you had
  10872.     pressed the hot key.
  10873.     
  10874.     Category: TaskMax
  10875.     
  10876.  
  10877.     Computer Tyme * MarxMenu * Users Manual                 Page #187
  10878.     -----------------------------------------------------------------
  10879.     
  10880.      TMaxTakeOver (On/Off)     TMaxTakeOver (On/Off)     TMaxTakeOver (On/Off)
  10881.     
  10882.     This allows you MarxMenu program to become the task manager menu. When
  10883.     the user presses the hot key to pop up the task switching menu it will
  10884.     pop up your MarxMenu program instead. You can disable this by setting it
  10885.     to off.
  10886.     
  10887.     Category: TaskMax
  10888.     
  10889.     
  10890.      TMaxTaskOpenFiles (TaskID) : Number     TMaxTaskOpenFiles (TaskID) : Number     TMaxTaskOpenFiles (TaskID) : Number
  10891.     
  10892.     Returns the number of open files a task has. You may want to test to see
  10893.     if a task that open files before deleting the task.
  10894.     
  10895.      Example:
  10896.        if TMaxTaskOpenFiles (3) > 0
  10897.           Writeln 'Task 3 has open files.'
  10898.        endif
  10899.     
  10900.     See Also: TMaxDeleteTask
  10901.     
  10902.     Category: TaskMax
  10903.     
  10904.     
  10905.      TMaxThisTask : Number     TMaxThisTask : Number     TMaxThisTask : Number
  10906.     
  10907.     Returns the TaskID of the current task.
  10908.     
  10909.     Category: TaskMax
  10910.     
  10911.     
  10912.      TMaxVersion : Number     TMaxVersion : Number     TMaxVersion : Number
  10913.     
  10914.     Returns the version number of TaskMax.
  10915.     
  10916.     Category: TaskMax
  10917.     
  10918.     
  10919.      Today : Date     Today : Date     Today : Date
  10920.     
  10921.     Returns the current day as a date. The date returned has the time set to
  10922.     midnight or 00:00:00. It can also be used to set the system date.
  10923.     
  10924.      Read the current day;
  10925.         X = Today
  10926.      Set the system clock:
  10927.         Today = TimeOf '08-19-91'
  10928.     
  10929.     See Also: Tomorrow Now
  10930.     
  10931.     Category: Time
  10932.     
  10933.  
  10934.     Computer Tyme * MarxMenu * Users Manual                 Page #188
  10935.     -----------------------------------------------------------------
  10936.     
  10937.      Tomorrow : Time     Tomorrow : Time     Tomorrow : Time
  10938.     
  10939.     Returns the time of the day after today at midnight.
  10940.     
  10941.     See Also: Today Now
  10942.     
  10943.     Category: Time
  10944.     
  10945.     
  10946.      Tone (Frequency,Duration)     Tone (Frequency,Duration)     Tone (Frequency,Duration)
  10947.     
  10948.     This command plays a note at Frequency cycles per second for a period of
  10949.     Duration 1/18 of a second. The reason it is in 1/18 seconds is because
  10950.     there is a standard interrupt that gives me that time period. The IBM
  10951.     series computers are not music oriented machines so don't throw away
  10952.     your Compact Disk player.
  10953.     
  10954.     The maximum duration is 255 1/18 of a second. Normally, MarxMenu will
  10955.     create a break in between notes equal to 1/8 of the duration of the
  10956.     note. If you want to eliminate the break and create a 'slur' (music
  10957.     term), add 256 to the duration. This tells MarxMenu to connect the notes
  10958.     without a break.
  10959.     
  10960.     Category: Music
  10961.     
  10962.     
  10963.      TotalDiskSpace <drive> : Number     TotalDiskSpace <drive> : Number     TotalDiskSpace <drive> : Number
  10964.     
  10965.     Returns total disk space in bytes.
  10966.     
  10967.      Example:
  10968.        Writeln (TotalDiskSpace 'C')
  10969.     
  10970.     TotalDiskSpace only looks at the first character of the string for
  10971.     the drive letter.
  10972.     
  10973.     Category: System
  10974.     
  10975.     
  10976.      TotalEMS : Number     TotalEMS : Number     TotalEMS : Number
  10977.     
  10978.     Returns total EMS memory in bytes.
  10979.     
  10980.      Example:
  10981.        Writeln TotalEMS
  10982.     
  10983.     Category: Memory
  10984.     
  10985.  
  10986.     Computer Tyme * MarxMenu * Users Manual                 Page #189
  10987.     -----------------------------------------------------------------
  10988.     
  10989.      Trim (string)     Trim (string)     Trim (string)
  10990.     
  10991.     Trims white space from both ends of a string. White space is
  10992.     blank characters and lower.
  10993.     
  10994.      Example:
  10995.         St = ' ABC '
  10996.         Trim St        ;St now is 'ABC'
  10997.     
  10998.     Category: String
  10999.     
  11000.     
  11001.      TrimInputString (On/Off)     TrimInputString (On/Off)     TrimInputString (On/Off)
  11002.     
  11003.     TrimInputString if set to on will cause blank characters to be trimmed
  11004.     from the front and tail of a string read from the keyboard with Readln.
  11005.     By default, TrimInputString is set to True.
  11006.     
  11007.     See Also: Readln
  11008.     
  11009.     Category: String
  11010.     
  11011.     
  11012.      TrueName (String) : String     TrueName (String) : String     TrueName (String) : String
  11013.     
  11014.     There is an undocumented feature of DOS called TRUENAME. It returns the
  11015.     real name of a file or directory looking past such things as drive
  11016.     mappings and Assigned or Substituted drives. On local drives you get the
  11017.     drive and path where the file really is. On networks you get server and
  11018.     volume information where the server name starts with a '\\'.
  11019.     
  11020.      Example:
  11021.      TrueName ('H:')  ;returns \\TYME\SYS\HOME\MARC
  11022.     
  11023.     See Also: CleanFileName
  11024.     
  11025.     Category: String File
  11026.     
  11027.     
  11028.      UnBlank : Boolean     UnBlank : Boolean     UnBlank : Boolean
  11029.     
  11030.     Unblank returns true if MarxMenu has determined that the screen blanker
  11031.     should finish. Your screen blanker needs to call UnBlank to determine
  11032.     when to unblank the screen.
  11033.     
  11034.      Example:
  11035.        while not UnBlank
  11036.           <your screen blanker>
  11037.        endwhile
  11038.     
  11039.     You can also set UnBlank to true when you want to UnBlank the screen.
  11040.     This can be used if you write your own screen blanker that is an
  11041.     external program.
  11042.     
  11043.  
  11044.     Computer Tyme * MarxMenu * Users Manual                 Page #190
  11045.     -----------------------------------------------------------------
  11046.     
  11047.      Example:
  11048.        Procedure MyBlanker
  11049.           Execute 'MYBLANK.EXE'
  11050.           UnBlank = True
  11051.        EndProc
  11052.     
  11053.     See Also: BlankScreenProgram
  11054.     
  11055.     Category: Display
  11056.     
  11057.     
  11058.      UniqueFileName : String     UniqueFileName : String     UniqueFileName : String
  11059.     
  11060.     Uses the create new file call to get a filename that is different than
  11061.     any other file name. It is tied to the DOS call that is used to create a
  11062.     unique file name according to the rules of your operating system.
  11063.     
  11064.     Category: File String
  11065.     
  11066.     
  11067.      Until     Until     Until
  11068.     
  11069.     Conditional control.
  11070.     
  11071.      Example:
  11072.         Repeat
  11073.            <statement>
  11074.            <statement>
  11075.         Until <condition>
  11076.     
  11077.     See Also: Repeat.
  11078.     
  11079.     Category: Conditional
  11080.     
  11081.     
  11082.      UpperCase (String) : String     UpperCase (String) : String     UpperCase (String) : String
  11083.     
  11084.     Return UpperCase of String including support for international
  11085.     characters.
  11086.     
  11087.      Example:
  11088.         Name = UpperCase(Name)
  11089.     
  11090.     See Also: LowerCase
  11091.     
  11092.     Category: String International
  11093.     
  11094.  
  11095.     Computer Tyme * MarxMenu * Users Manual                 Page #191
  11096.     -----------------------------------------------------------------
  11097.     
  11098.      UpperCaseOnly : Boolean     UpperCaseOnly : Boolean     UpperCaseOnly : Boolean
  11099.     
  11100.     Setting UpperCaseOnly to on forces text entered with Readln or ReadKey
  11101.     to upper case.
  11102.     
  11103.      Example:
  11104.        UpperCaseOnly On
  11105.     
  11106.     See Also: Readln
  11107.     
  11108.     Category: String
  11109.     
  11110.     
  11111.      UseArrows     UseArrows     UseArrows
  11112.     
  11113.     UseArrows tells MarxMenu that the selection will be made by moving an
  11114.     inverse video bar over the selections. No parameters are required for
  11115.     this command to work. It will pick the first line with a capital letter
  11116.     as the first menu selection. All text in the window must be indented at
  11117.     least one space and there must be one space between the end of the line
  11118.     and the right wall of the window. Multiple items on the same line must
  11119.     be separated by two or more spaces.
  11120.     
  11121.     The OnKey selection is triggered by either the first capital letter in
  11122.     the selection or by a number from 0 - 9 or some punctuation characters.
  11123.     This number or letter will be a different color if you use the CapsColor
  11124.     command. (See Also: PULL.MNU for an example).
  11125.     
  11126.     UseArrows Off will disable this feature.
  11127.     
  11128.     See Also: ReadKey
  11129.     
  11130.     Category: Display
  11131.     
  11132.     
  11133.      UseCommand (on/off)     UseCommand (on/off)     UseCommand (on/off)
  11134.     
  11135.     Used with Execute. UseCommand will load COMMAND.COM before running the
  11136.     specified program. Its not as fast, because the system has to find and
  11137.     load COMMAND.COM, then the specified program. The advantage is if
  11138.     COMMAND.COM is loaded, it will allow you to run batch files and internal
  11139.     DOS commands. It also doesn't require you to specify the COM or EXE
  11140.     extension.
  11141.     
  11142.      Example:
  11143.        OnKey 'D'
  11144.        |UseCommand On
  11145.        |Execute 'DM'
  11146.     
  11147.     The default is OFF.
  11148.     
  11149.  
  11150.     Computer Tyme * MarxMenu * Users Manual                 Page #192
  11151.     -----------------------------------------------------------------
  11152.     
  11153.     See Also: Execute
  11154.     
  11155.     Category: Execution
  11156.     
  11157.     
  11158.      UsedDiskSpace <drive> : Number     UsedDiskSpace <drive> : Number     UsedDiskSpace <drive> : Number
  11159.     
  11160.     Returns used disk space in bytes.
  11161.     
  11162.      Example:
  11163.        Writeln (UsedDiskSpace 'C')
  11164.     
  11165.     UsedDiskSpace only looks at the first character of the string for the
  11166.     drive letter.
  11167.     
  11168.     Category: System
  11169.     
  11170.     
  11171.      UseNovPassword : Boolean     UseNovPassword : Boolean     UseNovPassword : Boolean
  11172.     
  11173.     If UseNovPassword is set to true then the screen blanker will require
  11174.     that the user type his Novell password to unblank the screen. Full
  11175.     Novell security and intruder detection is active here. If Novell's
  11176.     intruder detection is active, then if an intruder fails to type in the
  11177.     password after a number of attempts, then Netware will not accept the
  11178.     correct password until intruder detection allows it.
  11179.     
  11180.     If you don't know what intruder detection is, read the Netware manuals
  11181.     on the subject. It is something you should use.
  11182.     
  11183.     Category: Novell
  11184.     
  11185.     
  11186.      Value (string) : Number     Value (string) : Number     Value (string) : Number
  11187.     
  11188.     Converts String to Number. Leading $ indicates Hex.
  11189.     
  11190.      Example:
  11191.        Value '5'   ;returns 5
  11192.     
  11193.     See Also: Str
  11194.     
  11195.     Category: String Math Real
  11196.     
  11197.     
  11198.      Var     Var     Var
  11199.     
  11200.     Used to create variables.
  11201.     
  11202.      Example:
  11203.        var X,Y,Z
  11204.        var
  11205.          X = 5
  11206.          Y = 6
  11207.     
  11208.  
  11209.     Computer Tyme * MarxMenu * Users Manual                 Page #193
  11210.     -----------------------------------------------------------------
  11211.     
  11212.     See Also: Constant Shared Qualifier
  11213.     
  11214.     Category: Variable
  11215.     
  11216.     
  11217.      VarType (Variable) : String     VarType (Variable) : String     VarType (Variable) : String
  11218.     
  11219.     VarType returns the type of data contained in a variable. Types returned
  11220.     include the following:
  11221.     
  11222.       NUL
  11223.       NUMBER
  11224.       REAL
  11225.       STRING
  11226.       ARRAY
  11227.       FILE
  11228.       POINTER
  11229.       PROCEDURE
  11230.       UNKNOWN
  11231.     
  11232.     Category: Variable
  11233.     
  11234.     
  11235.      VideoMode : Number     VideoMode : Number     VideoMode : Number
  11236.     
  11237.     Returns Current Video Mode.
  11238.     
  11239.      Example:
  11240.        Writeln VideoMode
  11241.     
  11242.     Category: Display
  11243.     
  11244.     
  11245.      VideoPage : Number     VideoPage : Number     VideoPage : Number
  11246.     
  11247.     Returns Current Video Page.
  11248.     
  11249.     Category: Display
  11250.     
  11251.     
  11252.      ViewArray (Array)     ViewArray (Array)     ViewArray (Array)
  11253.     
  11254.     Allows you to view an array of strings in the current window. Works just
  11255.     like ViewTextFile.
  11256.     
  11257.      Example:
  11258.        var New
  11259.        ReadTextFile ('MARXREAD.ME',New)
  11260.        DrawBox 1 2 80 23
  11261.        ViewArray New
  11262.     
  11263.     See Also: ViewTextFile
  11264.     
  11265.  
  11266.     Computer Tyme * MarxMenu * Users Manual                 Page #194
  11267.     -----------------------------------------------------------------
  11268.     
  11269.     Category: Display Array
  11270.     
  11271.     
  11272.      ViewTextFile (Name)     ViewTextFile (Name)     ViewTextFile (Name)
  11273.     
  11274.     This command lets you view a text file in the current window.
  11275.     
  11276.      Example:
  11277.        DrawBox 1 2 80 23
  11278.        ViewTextFile 'MARXREAD.ME'
  11279.     
  11280.     See Also: ViewArrayFile
  11281.     
  11282.     Category: Display File
  11283.     
  11284.     
  11285.      VinCheckService (Service) : Number     VinCheckService (Service) : Number     VinCheckService (Service) : Number
  11286.     
  11287.     Returns information about the requested service.
  11288.     
  11289.      Services:
  11290.     
  11291.         1 - Communications
  11292.         2 - Primary 3270 Emulation ID
  11293.         3 - Async Terminal Emulation
  11294.         4 - File Deflection
  11295.         5 - BPS
  11296.         6 - UnDocumented
  11297.         7 - StreetTalk
  11298.         8 - Environment
  11299.         9 - NetBios
  11300.        10 - Secondary 3270 Emulation ID
  11301.        11 - Semaphore
  11302.        12 - 3270 Emulation Active Status
  11303.        13 - 3270 Keyboard Interrupt Simulator
  11304.        14 - Advanced 3270 SNA
  11305.        15 - UnDocumented
  11306.        16 - UnDocumented
  11307.     
  11308.      Return Codes:
  11309.         0 - Service is Installed
  11310.         1 - Service is not Installed
  11311.         2 - Invalid Service Number
  11312.     
  11313.     Category: Vines
  11314.     
  11315.  
  11316.     Computer Tyme * MarxMenu * Users Manual                 Page #195
  11317.     -----------------------------------------------------------------
  11318.     
  11319.      VinesInt : Number     VinesInt : Number     VinesInt : Number
  11320.     
  11321.     Returns the interrupt number the Vines software is servicing.
  11322.     
  11323.     Category: Vines
  11324.     
  11325.     
  11326.      VinesLoaded : Boolean     VinesLoaded : Boolean     VinesLoaded : Boolean
  11327.     
  11328.     VinesLoaded returns True if the Vines shell is loaded.
  11329.     
  11330.     Category: Vines
  11331.     
  11332.     
  11333.      VinUserName : String     VinUserName : String     VinUserName : String
  11334.     
  11335.     Returns the StreetTalk name of the person who is logged in.
  11336.     
  11337.     Category: Vines
  11338.     
  11339.     
  11340.      VinSerialNumber (Drive) : Number     VinSerialNumber (Drive) : Number     VinSerialNumber (Drive) : Number
  11341.     
  11342.     Returns the Vines serial number on the server that the drive letter
  11343.     referrences.
  11344.     
  11345.      Example:
  11346.        Writeln VinSerialNumber ('Z')
  11347.     
  11348.     Category: Vines
  11349.     
  11350.     
  11351.      Volume (drive)     Volume (drive)     Volume (drive)
  11352.     
  11353.     Returns the volume label of the specified drive.
  11354.     
  11355.      Example:
  11356.        Writeln Volume 'C'   ;volume lable on drive C
  11357.     
  11358.     Category: System
  11359.     
  11360.     
  11361.      Wait (number)     Wait (number)     Wait (number)
  11362.     
  11363.     Delay for a number of 1/100 seconds. Wait 250 delays 2 1/2 seconds.
  11364.     
  11365.     If you are running a multi-tasker like Windows 3 or DesqView, and the
  11366.     delay is over 1/4 second, MarxMenu will release time slices back to DOS
  11367.     and not bog down the CPU power on long waits. MarxMenu also releases CPU
  11368.     cycles while idle at the keyboard.
  11369.     
  11370.      Example:
  11371.         Wait 300   ;3 second delay
  11372.     
  11373.  
  11374.     Computer Tyme * MarxMenu * Users Manual                 Page #196
  11375.     -----------------------------------------------------------------
  11376.     
  11377.     See Also: WaitOrKbdReady
  11378.     
  11379.     Category: Misc
  11380.     
  11381.     
  11382.      WaitOrKbdReady (Number)     WaitOrKbdReady (Number)     WaitOrKbdReady (Number)
  11383.     
  11384.     This command is just like the WAIT command except the wait is aborted by
  11385.     pressing any key. Time to wait is in hundredths of a second. This
  11386.     command is useful when using MarxMenu to write a running demo.
  11387.     
  11388.      Example:
  11389.         WaitOrKbdReady 300   ;3 second delay or until KeyPress
  11390.     
  11391.     See Also: Wait
  11392.     
  11393.     Category: Keyboard
  11394.     
  11395.     
  11396.      WhereX : Number     WhereX : Number     WhereX : Number
  11397.     
  11398.     Returns the horizontal position of the cursor within the current window.
  11399.     
  11400.     Category: Display
  11401.     
  11402.     
  11403.      WhereXAbs : Number     WhereXAbs : Number     WhereXAbs : Number
  11404.     
  11405.     Returns the horizontal screen position of the cursor.
  11406.     
  11407.     Category: Display
  11408.     
  11409.     
  11410.      WhereY : Number     WhereY : Number     WhereY : Number
  11411.     
  11412.     Returns the vertical position of the cursor within the current window.
  11413.     
  11414.     
  11415.      WhereYAbs : Number     WhereYAbs : Number     WhereYAbs : Number
  11416.     
  11417.     Returns the vertical screen position of the cursor.
  11418.     
  11419.     Category: Display
  11420.     
  11421.     
  11422.      While     While     While
  11423.     
  11424.     Used for program control. Usage:
  11425.     
  11426.      WHILE (condition)
  11427.         (statement)
  11428.         (statement)
  11429.      ENDWHILE
  11430.     
  11431.  
  11432.     Computer Tyme * MarxMenu * Users Manual                 Page #197
  11433.     -----------------------------------------------------------------
  11434.     
  11435.     Execution stays in the while loop as long as the condition is true.
  11436.     
  11437.     See Also: EndWhile
  11438.     
  11439.     Category: Conditional
  11440.     
  11441.     
  11442.      WholeFileNames (On/Off)     WholeFileNames (On/Off)     WholeFileNames (On/Off)
  11443.     
  11444.     Controls if ReadDirectory will return the whole name and path or just
  11445.     the filename part.
  11446.     
  11447.     See Also: ReadDirectory
  11448.     
  11449.     Category: File
  11450.     
  11451.     
  11452.      Window (X,Y,Width,Height)     Window (X,Y,Width,Height)     Window (X,Y,Width,Height)
  11453.     
  11454.     Window changes the size of the active area of the screen. It can be used
  11455.     to either reduce or expand where text can be written.
  11456.     
  11457.     See Also: DrawBox
  11458.     
  11459.     Category: Display
  11460.     
  11461.     
  11462.      WindowHeight : Number     WindowHeight : Number     WindowHeight : Number
  11463.     
  11464.     Returns number of rows in current window.
  11465.     
  11466.     Category: Display
  11467.     
  11468.     
  11469.      WindowWidth : Number     WindowWidth : Number     WindowWidth : Number
  11470.     
  11471.     Returns number of columns in current window.
  11472.     
  11473.     Category: Display
  11474.     
  11475.     
  11476.      WinX : Number     WinX : Number     WinX : Number
  11477.     
  11478.     Returns the horizontal location of the left hand corner of the window.
  11479.     
  11480.     See Also: WinY
  11481.     
  11482.     Category: Display
  11483.     
  11484.  
  11485.     Computer Tyme * MarxMenu * Users Manual                 Page #198
  11486.     -----------------------------------------------------------------
  11487.     
  11488.      WinY : Number     WinY : Number     WinY : Number
  11489.     
  11490.     Returns the vertical location of the left hand corner of the window.
  11491.     
  11492.     See Also: WinX
  11493.     
  11494.     Category: Display
  11495.     
  11496.     
  11497.      WordStarKeys (On/Off)     WordStarKeys (On/Off)     WordStarKeys (On/Off)
  11498.     
  11499.     In the early days of MarxMenu I mapped many of the cursor movement keys
  11500.     to match the WordStar key strokes. Now you can turn this off to get the
  11501.     real scan codes from the arrow keys.
  11502.     
  11503.     See Also: Readln
  11504.     
  11505.     Category: String
  11506.     
  11507.     
  11508.      Write (string)     Write (string)     Write (string)
  11509.     
  11510.     Writes (string) on the screen at the current cursor position.
  11511.     
  11512.      Example:
  11513.         Write ' - Heading - '
  11514.     
  11515.     Category: Display
  11516.     
  11517.     
  11518.      WriteCenter (string)     WriteCenter (string)     WriteCenter (string)
  11519.     
  11520.     Writes (string) centered in current window.
  11521.     
  11522.     Category: Display
  11523.     
  11524.     
  11525.      WriteError (String)     WriteError (String)     WriteError (String)
  11526.     
  11527.     This command works just like Write except that it writes to the DOS
  11528.     error device handle. This can be used to put messages on the screen when
  11529.     the output is redirected to a file.
  11530.     
  11531.     See Also: WritelnError
  11532.     
  11533.     Category: Display
  11534.     
  11535.  
  11536.     Computer Tyme * MarxMenu * Users Manual                 Page #199
  11537.     -----------------------------------------------------------------
  11538.     
  11539.      WriteFileBlock (Name,Offset,Size,Segment)     WriteFileBlock (Name,Offset,Size,Segment)     WriteFileBlock (Name,Offset,Size,Segment)
  11540.     
  11541.     WriteFileBlock writes disk file Name starting at byte Offset for Size
  11542.     bytes from memory buffer Segment. It is intended to write any kind of
  11543.     file. If the file doesn't exist, it is created.
  11544.     
  11545.     The maximum value for Size is 65504. The segment must be as large as the
  11546.     number of bytes you are writing.
  11547.     
  11548.     See Also: ReadFileBlock GetMem FreeMem
  11549.     
  11550.     Category: File Memory
  11551.     
  11552.     
  11553.      Writeln (string)     Writeln (string)     Writeln (string)
  11554.     
  11555.     Writes (string) on the screen followed by a CR-LF (carriage
  11556.     return-line feed).
  11557.     
  11558.      Example:
  11559.         Writeln 'The time is: ' TimeString
  11560.     
  11561.     Category: Display
  11562.     
  11563.     
  11564.      WritelnError (String)     WritelnError (String)     WritelnError (String)
  11565.     
  11566.     This command works just like Writeln except that it writes to the DOS
  11567.     error device handle. This can be used to put messages on the screen when
  11568.     the output is redirected to a file.
  11569.     
  11570.     See Also: WriteError
  11571.     
  11572.     Category: Display
  11573.     
  11574.     
  11575.      WriteTextFile (FileName,Array)     WriteTextFile (FileName,Array)     WriteTextFile (FileName,Array)
  11576.     
  11577.     This command writes a string array to a text file. Do not use FileCreate
  11578.     of any other file commands with this. This command does it all.
  11579.     
  11580.      Example:
  11581.        var X
  11582.        ReadTextFile('MARXREAD.ME',X)
  11583.        WriteTextFile('A:MARXREAD.ME',X)  ;copies file to A:
  11584.     
  11585.     See Also: ReadTextFile
  11586.     
  11587.     Category: File Array
  11588.     
  11589.  
  11590.     Computer Tyme * MarxMenu * Users Manual                 Page #200
  11591.     -----------------------------------------------------------------
  11592.     
  11593.      WriteVertical (string)     WriteVertical (string)     WriteVertical (string)
  11594.     
  11595.     Writes (string) vertically on the screen from the current cursor
  11596.     position.
  11597.     
  11598.      Example:
  11599.        WriteVertical( 'Hello' )
  11600.     
  11601.          ;This would display
  11602.            H
  11603.            e
  11604.            l
  11605.            l
  11606.            o
  11607.     
  11608.     Category: Display
  11609.     
  11610.     
  11611.      Xor : Operator     Xor : Operator     Xor : Operator
  11612.     
  11613.     Returns logical Xor if operators are boolean; or bitwise Xor if
  11614.     operators are numeric.
  11615.     
  11616.     Xor (exclusive or) means on or the other but not both can be true.
  11617.     
  11618.      Example:
  11619.        A = True
  11620.        B = False
  11621.        A Xor B    ;returns true
  11622.     
  11623.     See Also: And Or Not
  11624.     
  11625.     Category: Math Boolean
  11626.     
  11627.     
  11628.      Year : Number     Year : Number     Year : Number
  11629.     
  11630.     Returns current Year.
  11631.     
  11632.     Category: Time
  11633.     
  11634.     
  11635.      YearOf (Date) : Number     YearOf (Date) : Number     YearOf (Date) : Number
  11636.     
  11637.     Returns the year of a date. If Date is passed as a string it is
  11638.     converted automatically.
  11639.     
  11640.      Example:
  11641.        Writeln YearOf Today    ;returns 1992
  11642.     
  11643.     See Also: TimeOf BadDate
  11644.     
  11645.  
  11646.     Computer Tyme * MarxMenu * Users Manual                 Page #201
  11647.     -----------------------------------------------------------------
  11648.     
  11649.     Category: Time
  11650.     
  11651.     
  11652.      STRING CONSTANTS     STRING CONSTANTS     STRING CONSTANTS
  11653.     
  11654.        F1   = #0#59   SF1  = #0#84   CF1  = #0#94   AF1  = #0#104
  11655.        F2   = #0#60   SF2  = #0#85   CF2  = #0#95   AF2  = #0#105
  11656.        F3   = #0#61   SF3  = #0#86   CF3  = #0#96   AF3  = #0#106
  11657.        F4   = #0#62   SF4  = #0#87   CF4  = #0#97   AF4  = #0#107
  11658.        F5   = #0#63   SF5  = #0#88   CF5  = #0#98   AF5  = #0#108
  11659.        F6   = #0#64   SF6  = #0#89   CF6  = #0#99   AF6  = #0#109
  11660.        F7   = #0#65   SF7  = #0#90   CF7  = #0#100  AF7  = #0#110
  11661.        F8   = #0#66   SF8  = #0#91   CF8  = #0#101  AF8  = #0#111
  11662.        F9   = #0#67   SF9  = #0#92   CF9  = #0#102  AF9  = #0#112
  11663.        F10  = #0#68   SF10 = #0#93   CF10 = #0#103  AF10 = #0#113
  11664.        F11  = #0#133  SF11 = #0#135  CF11 = #0#137  AF11 = #0#139
  11665.        F12  = #0#134  SF12 = #0#136  CF12 = #0#138  AF12 = #0#140
  11666.     
  11667.        ALT1 = #0#120  BKSP = #8
  11668.        ALT2 = #0#121  CR   = #13
  11669.        ALT3 = #0#122  CRLF = #13#10
  11670.        ALT4 = #0#123  ESC  = #27
  11671.        ALT5 = #0#124  FF   = #12
  11672.        ALT6 = #0#125  LF   = #10
  11673.        ALT7 = #0#126
  11674.        ALT8 = #0#127
  11675.        ALT9 = #0#128
  11676.        ALT0 = #0#129
  11677.     
  11678.        Key              Scan     WordStar
  11679.        ----------------------------------
  11680.        UpArrow        = #0#72    ^E
  11681.        DownArrow      = #0#80    ^X
  11682.        LeftArrow      = #0#75    ^S
  11683.        RightArrow     = #0#77    ^D
  11684.        HomeKey        = #0#71    ^W
  11685.        EndKey         = #0#79    ^Z
  11686.        CtrlLeftArrow  = #0#115   ^A
  11687.        CtrlRightArrow = #0#116   ^F
  11688.        PgUpKey        = #0#73    ^R
  11689.        PgDnKey        = #0#81    ^C
  11690.        InsKey         = #0#82    ^V
  11691.        DelKey         = #0#83    ^G
  11692.     
  11693.     Category: Constants
  11694.     
  11695.  
  11696.     Computer Tyme * MarxMenu * Users Manual                 Page #202
  11697.     -----------------------------------------------------------------
  11698.     
  11699.      TIME AND DATE CONSTANTS     TIME AND DATE CONSTANTS     TIME AND DATE CONSTANTS
  11700.     
  11701.        Jan = 1        Sun = 0
  11702.        Feb = 2        Mon = 1
  11703.        Mar = 3        Tue = 2
  11704.        Apr = 4        Wed = 3
  11705.        May = 5        Thu = 4
  11706.        Jun = 6        Fri = 5
  11707.        Jul = 7        Sat = 6
  11708.        Aug = 8
  11709.        Sep = 9        SecondsInHour = 3600
  11710.        Oct = 10       SecondsInDay  = 86400
  11711.        Nov = 11
  11712.        Dec = 12
  11713.     
  11714.     Category: Constants
  11715.     
  11716.     
  11717.      VIDEO CONSTANTS     VIDEO CONSTANTS     VIDEO CONSTANTS
  11718.     
  11719.      Video Modes:   Display Types:
  11720.     
  11721.        BW40 = 0       0 = HercMono
  11722.        CO40 = 1       1 = CGA
  11723.        BW80 = 2       2 = MCGA
  11724.        CO50 = 3       3 = EGA
  11725.        MONO = 7       4 = VGA
  11726.     
  11727.     Category: Constants
  11728.     
  11729.     
  11730.      COLOR CONSTANTS     COLOR CONSTANTS     COLOR CONSTANTS
  11731.     
  11732.        Black   = 0    DGrey    = 8
  11733.        Blue    = 1    LBlue    = 9
  11734.        Green   = 2    LGreen   = 10
  11735.        Cyan    = 3    LCyan    = 11
  11736.        Red     = 4    LRed     = 12
  11737.        Magenta = 5    LMagenta = 13
  11738.        Brown   = 6    Yellow   = 14
  11739.        Grey    = 7    White    = 15
  11740.     
  11741.     Category: Constants
  11742.     
  11743.     
  11744.      BOOLEAN CONSTANTS     BOOLEAN CONSTANTS     BOOLEAN CONSTANTS
  11745.     
  11746.        True    Yes    On
  11747.        False   No     Off
  11748.     
  11749.     Category: Constants
  11750.     
  11751.  
  11752.     Computer Tyme * MarxMenu * Users Manual                 Page #203
  11753.     -----------------------------------------------------------------
  11754.     
  11755.